组合来自不同范围的sbt任务

组合来自不同范围的sbt任务,sbt,sbt-native-packager,Sbt,Sbt Native Packager,我将sbt与本机packager插件结合使用,以便为Play 2.2应用程序构建Debian软件包。我们使用debian:publish将包上载到我们的Artifactory服务器,并使用publish命令发布常规Java JAR 我希望能够使用常规的publish命令发布jar文件和Debian包。我认为我需要以某种方式将Debian范围中的发布任务与Compile范围中的常规任务结合起来,但我找不到任何关于如何实现这一点的文档 我提出了下面的代码,它是有效的,但在我看来是一种“错误”的方法:

我将sbt与本机packager插件结合使用,以便为Play 2.2应用程序构建Debian软件包。我们使用
debian:publish
将包上载到我们的Artifactory服务器,并使用
publish
命令发布常规Java JAR

我希望能够使用常规的
publish
命令发布jar文件和Debian包。我认为我需要以某种方式将
Debian
范围中的发布任务与
Compile
范围中的常规任务结合起来,但我找不到任何关于如何实现这一点的文档

我提出了下面的代码,它是有效的,但在我看来是一种“错误”的方法:

publish := { // Also publish deb files
  val value = publish.value
  (publish in Debian).value
}
特别是第二行似乎是错误的,因为它忽略了值。
val
用于消除警告,这是另一种气味


有更好的方法吗?

您可以使用
triggeredBy
。在
build.sbt
中添加以下行:

publish in Debian <<= (publish in Debian).triggeredBy(publish in Compile)

publish in Debian您可以使用
triggeredBy
。在
build.sbt
中添加以下行:

publish in Debian <<= (publish in Debian).triggeredBy(publish in Compile)

publish in Debian这里,如果您不关心返回值,那么
dependsOn
任务是合适的:

publish := publish.dependsOn(publish in Debian).value

这里,如果您不关心返回值,那么
dependsOn
任务是合适的:

publish := publish.dependsOn(publish in Debian).value

我认为这看起来更好,因为它更能描述我真正想要实现的目标。谢谢这里的一个问题是,在Debian中发布的失败不会被传播。我认为这看起来更好,因为它更能描述我实际试图实现的目标。谢谢这里的一个问题是,在Debian中发布失败不会传播。