2016-05-12 35 views
1

Ich habe ein Projekt sbt (0.13.8) mit mehreren Teilprojekten, die meisten von ihnen in reinem Scala. Sie sind Kreuz assembly ed und publish ed;sbt: Vermeiden mehrerer Assembly/publish Schritte in Java Subprojekt

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

Das funktioniert ganz so weit gut.

Nun füge ich ein Java-Subprojekt hinzu, das von einigen Scala-Teilprojekten abhängt. Jedoch kann ich keinen Weg finden, es zu vermeiden, und mehrere Male ing publish. Während der folgenden

crossPaths := false 

hat den Effekt, dass ich am Ende nur ein Glas in der Java-Teilprojekt haben, wenn ich

sbt +assembly 

laufen immer noch sehe ich für alle Scala-Versionen getan. Damit könnte ich leben, aber

sbt +assembly +publish 

versucht, das gleiche (Java Subprojekt) Artefakt mehrmals zu veröffentlichen.

Gibt es einen Weg, idealerweise ohne ein weiteres Plugin, um dieses Problem zu vermeiden?

Antwort

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 
) 

Switch to javaOnly vor der Veröffentlichung:

;project javaOnly ;+publish