我有一个带有几个子项目的sbt(0.13.8)项目,其中大多数是纯Scala。它们是交叉assembly
和publish
ed;
crossScalaVersions := Seq("2.10.6", "2.11.8")
releaseCrossBuild := true
到目前为止,这项工作非常顺利。
现在我要添加一个Java子项目,它取决于一些Scala子项目。但是,我无法找到一种方法来避免它assembly
和publish
多次。而以下
crossPaths := false
的结果是,当我运行
时,最后我在java子项目中只有一个jarsbt +assembly
我仍然认为所有Scala版本都已完成。我可以忍受,但
sbt +assembly +publish
尝试多次发布相同的(java子项目)工件。
有没有办法,理想情况下没有其他插件,以避免这个问题?
答案 0 :(得分:1)
build.sbt:
scalaVersion := "2.11.7"
crossScalaVersions := Seq("2.10.5", "2.11.7")
lazy val scalaOnly = project
.in(file("."))
.aggregate(scalaPrj)
.settings(
packagedArtifacts := Map.empty
)
lazy val scalaPrj = project
.in(file("scala-prj"))
lazy val javaPrj = project
.in(file("java-prj"))
.dependsOn(scalaPrj)
lazy val javaOnly = project
.in(file("java-dummy-aggregator"))
.aggregate(javaPrj)
.settings(
crossScalaVersions := Seq("2.11.7"),
packagedArtifacts := Map.empty
)
在发布之前切换到javaOnly:
;project javaOnly ;+publish