sbt:避免 java 子项目中的多个组装/发布步骤
sbt: avoiding multiple assembly / publish steps in java subproject
我有一个 sbt (0.13.8) 项目和几个子项目,其中大部分是纯 Scala 的。它们交叉 assembly
ed 和 publish
ed;
crossScalaVersions := Seq("2.10.6", "2.11.8")
releaseCrossBuild := true
到目前为止效果很好。
现在我正在添加一个 Java 子项目,它依赖于一些 Scala 子项目。但是,我找不到避免多次 assembly
ing 和 publish
ing 的方法。而以下
crossPaths := false
的效果是,最后我在 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
)
发布前切换到 javaOnly:
;project javaOnly ;+publish
我有一个 sbt (0.13.8) 项目和几个子项目,其中大部分是纯 Scala 的。它们交叉 assembly
ed 和 publish
ed;
crossScalaVersions := Seq("2.10.6", "2.11.8")
releaseCrossBuild := true
到目前为止效果很好。
现在我正在添加一个 Java 子项目,它依赖于一些 Scala 子项目。但是,我找不到避免多次 assembly
ing 和 publish
ing 的方法。而以下
crossPaths := false
的效果是,最后我在 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
)
发布前切换到 javaOnly:
;project javaOnly ;+publish