【发布时间】:2019-09-15 23:47:14
【问题描述】:
我有一个sbt 项目,docker:publishLocal 将在我的机器上创建一个 docker 映像用于测试,docker:publish 将把映像发布到存储库,并将构建中的 jar 文件发布到存储库。
如果我的项目是快照,我想禁用发布到存储库,同时仍然能够构建本地映像。
ThisBuild / publishArtifact := ! isSnapshot.value
为publish 命令做正确的事情,但它也禁用publishLocal。
我想写一些类似的东西
if (isSnapshot.value) {
publish := { }
}
但这给了我一个我根本不明白的错误:
[info] Loading project definition from /Users/dev/project
/Users/dev/build.sbt:1: error: type mismatch;
found : Unit
required: sbt.internal.DslEntry
if (isSnapshot.value) {
^
过去的经验表明,重新定义 publish 以有条件地调用原始版本是行不通的,因为
publish := {
if (!isSnapshot.value) publish.value
}
给出任务总是被评估的警告。
有没有办法做到这一点?
【问题讨论】:
标签: sbt