加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何从我的SBT任务中调用另一个任务?

发布时间:2020-12-16 09:12:29 所属栏目:安全 来源:网络整理
导读:我试图在我的任务中调用runTask,并认为这将工作: name := "hello"version := "1.0"scalaVersion := "2.10.2"lazy val hello = taskKey[Unit]("executes hey")lazy val helloTask = hello = runTask(fullClasspath,"sample.Hey" in run,runner in run) 但是,
我试图在我的任务中调用runTask,并认为这将工作:

name := "hello"

version := "1.0"

scalaVersion := "2.10.2"

lazy val hello = taskKey[Unit]("executes hey")

lazy val helloTask = hello <<= runTask(fullClasspath,"sample.Hey" in run,runner in run)

但是,这不是.关于我如何能做到这一点的任何想法?

解决方法

一般答案:

为了回答您的一般问题,解决方案是使您的任务依赖于其他任务.直接调用任务将围绕依赖关系系统,并行执行系统等执行.您依赖和调用这样的任务(以0.13风格的语法):

myTask := {
  ...
  val result = otherTask.value
  ...
}

请注意,otherTask将在myTask开始之前被调用,而不是在依赖性出现的myTask的正文中;因为这是依赖关系的工作原理.

如果由于任何原因,您发现这样做,“正常”的方式是不合适或不可接受的,那么考虑到sbt中的良好风格是将任务的声明与其实现分开.一个典型的任务实现简单地传递参数,然后调用实际执行该方法的方法.如果您要呼叫的任务是以这种方式实现的,那么应答“如何调用任务T?”是“不要;调用相同的代码T”.

具体答案:

但从你的例子来看,它看起来像我想要解决的问题是“除了运行外,我如何创建一个自定义的运行任务?这个问题在sbt FAQ中回答;见http://www.scala-sbt.org/0.13.0/docs/faq.html.答案是使用方便的方法fullRunTask和fullRunInputTask.

顺便提一下,如果你看这些方法的源代码,你会看到他们不会调用另一个任务的任务;相反,他们采取“调用相同的代码”方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读