2016-04-04 5 views
0

Ich arbeite an einem Projekt, bei dem ich eines unserer Projekte, die in unseren Nexus-Repositories liegen, als Abhängigkeit hinzufügen muss. Ich muss die Test- und Hauptklassen von diesem Projekt verwenden.SBT löst Testartefakte von Nexus auf. Workaround nicht sehr hilfreich

In meinem build.sbt, die folgende nicht die Abhängigkeit mit einer Meldung zu beheben, dass die Testkonfiguration ist nicht öffentlich

libraryDependencies += "XProj" % "XProj_2.11" % "1.0-SNAPSHOT" % "test->test;test->compile" classifier "tests" 

Dies funktioniert

libraryDependencies += "XProj" % "XProj_2.11" % "1.0-SNAPSHOT" % "test" classifier "tests" 

Aber ich muss auch verwenden Klassen aus dem Hauptquellordner, die auf diese Weise nicht aufgelöst werden. Ich versuchte "test;test->compile" und obwohl die Abhängigkeit aufgelöst wird, werden die Hauptklassen nicht geholt. Das Aufrufen einer Methode aus einer der Testklassen von XProj schlägt mit einem java.lang.NoClassDefFoundError fehl. Gibt es eine andere Möglichkeit, die Hauptklassen hinzuzufügen und die Abhängigkeit gleichzeitig aufzulösen?

Antwort

0

Versuchen Sie folgendes:

libraryDependencies ++= { 
    val xproj = "XProj" %% "XProj" % "1.0-SNAPSHOT" 
    Seq(
    xproj % "test" classifier "tests" 
    xproj % "test->compile" classifier "tests" 
) 
} 

Prost

+0

Nein. Same java.lang.NoClassDefFoundError für eine der Hauptklassen in XProj – muku

+0

Verwenden Sie dieselbe Scala-Version für die Projekte? – Joan

+0

yep 2.11.7 in beiden Projekten – muku

0

Ohne ein bisschen mehr über die Konfigurationen Ihrer Abhängigkeit zu wissen, ich glaube, Sie wahrscheinlich ändern wollen:

libraryDependencies += "XProj" % "XProj_2.11" % "1.0-SNAPSHOT" % "test" classifier "tests"

etwas wie:

libraryDependencies += "XProj" % "XProj_2.11" % "1.0-SNAPSHOT" % "default,test" classifier "tests"

wo die default,test ist eine durch Kommata getrennte Liste der Konfigurationen, die Sie brauchen in.

Die -> Indikatoren in Ivy zu ziehen sind in der Regel für das Modul, um anzuzeigen, transitiv Konfigurationen verwendet werden, dh wenn ich test->compile schreiben diese Mittel dass die test Konfiguration meines Moduls sollte die compile Konfiguration der Abhängigkeit ziehen.

+0

Ich überprüfte die XProj Abhängigkeit und es sind keine Konfigurationen definiert. Das Hinzufügen von "default, test" -Ergebnissen zu einem Fehler "kann die Abhängigkeit 'XProj ...' nicht zum Konfigurationsstandard des Modulstandards # MyProject hinzufügen, da diese Konfiguration nicht existiert". Wenn ich es zu "compile, test" ändere ist sbt glücklich, aber zur Laufzeit bekomme ich die "java.lang.NoClassDefFoundError" – muku

+0

Erste Frage: Ist das ein Efeu oder MVN Repo/Abhängigkeit? Wenn es Ivy-basiert ist (hat eine assoziierte ivy.xml), ist dies ein bisschen einfacher im Vergleich zu MVN (mit einer pom.xml). Ich bin ein wenig überrascht, dass Sie unterschiedliche Laufzeit- und Kompilierzeit-Klassenpfade bekommen. – jonc

+0

Es ist ein MVN Repo. – muku

Verwandte Themen