2016-05-12 24 views
1

我有一個sbt(0.13.8)項目,其中有幾個子項目,其中大部分都是純Scala項目。他們交叉assembly ed和publish ed;sbt:避免Java子項目中的多個組裝/發佈步驟

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

到目前爲止,這個工作很好。

現在我正在添加一個Java子項目,它依賴於一些Scala子項目。但是,我找不到一種方法來避免它多次。雖然下面

crossPaths := false 

有最後我只有一個罐子在java子項目的效果,當我運行

sbt +assembly 

我仍然可以看到它正在做的所有的Scala版本。這我可以住,但

sbt +assembly +publish 

試圖多次發佈相同的(java子項目)工件。

有沒有辦法,理想情況下沒有另一個插件,以避免這個問題?

回答

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