组合来自不同范围的sbt任务
我将sbt与本机packager插件结合使用,以便为Play 2.2应用程序构建Debian软件包。我们使用组合来自不同范围的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范围中的常规任务结合起来,但我找不到任何关于如何实现这一点的文档 我提出了下面的代码,它是有效的,但在我看来是一种“错误”的方法:
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中发布失败不会传播。