sbt:避免java子项目中的多个汇编/发布步骤

时间:2016-05-12 17:21:09

标签: java scala sbt cross-compiling sbt-assembly

我有一个带有几个子项目的sbt(0.13.8)项目,其中大多数是纯Scala。它们是交叉assemblypublish ed;

crossScalaVersions := Seq("2.10.6", "2.11.8")
releaseCrossBuild := true

到目前为止,这项工作非常顺利。

现在我要添加一个Java子项目,它取决于一些Scala子项目。但是,我无法找到一种方法来避免它assemblypublish多次。而以下

crossPaths := false

的结果是,当我运行

时,最后我在java子项目中只有一个jar
sbt +assembly

我仍然认为所有Scala版本都已完成。我可以忍受,但

sbt +assembly +publish

尝试多次发布相同的(java子项目)工件。

有没有办法,理想情况下没有其他插件,以避免这个问题?

1 个答案:

答案 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