sbt:避免java子项目中的多个组装/发布步骤
我有一个sbt(0.13.8)项目,其中有几个子项目,其中大多数是纯Scala的。它们是交叉sbt:避免java子项目中的多个组装/发布步骤,java,scala,sbt,cross-compiling,sbt-assembly,Java,Scala,Sbt,Cross Compiling,Sbt Assembly,我有一个sbt(0.13.8)项目,其中有几个子项目,其中大多数是纯Scala的。它们是交叉assemblyed和published crossScalaVersions := Seq("2.10.6", "2.11.8") releaseCrossBuild := true 到目前为止,这种方法非常有效 现在我添加了一个Java子项目,它依赖于一些Scala子项目。然而,我找不到一种方法来避免它多次assemblying和publishing。而以下 crossPaths := false
assembly
ed和publish
ed
crossScalaVersions := Seq("2.10.6", "2.11.8")
releaseCrossBuild := true
到目前为止,这种方法非常有效
现在我添加了一个Java子项目,它依赖于一些Scala子项目。然而,我找不到一种方法来避免它多次assembly
ing和publish
ing。而以下
crossPaths := false
结果是,当我运行java子项目时,我在java子项目中只有一个jar
sbt +assembly
我仍然看到所有Scala版本都在使用它。这个我可以接受,但是
sbt +assembly +publish
尝试多次发布同一(java子项目)工件
有没有一种方法可以避免这个问题,最好不要使用其他插件?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
)
仅在发布前切换到Java:
;project javaOnly ;+publish