Maven Abhängigkeit zu Pom vs direkten Abhängigkeiten

  • Themenstarter Themenstarter bygones
  • Beginndatum Beginndatum
B

bygones

Gast
Hallo,

ich habe ein Maven projekt, das ein paar jars (Testbibliotheken) als Abhängigkeiten definiert, ansonsten keine src hat. Als Packaging habe ich POM angegeben, alle jars haben den scope compile

[c]Projekt-A: hamcrest-all-1.2.jar, mockito-1.8.4.jar, junit-4.7.jar[/c]

Projekte die nun ebenso diese libs brauchen sollen nun nicht direkt auf alle Testlibs eine Abhängigkeit definieren, sondern eben auf das pom von Projekt-A mit scope test.

In Eclipse wird damit auch erfolgreich compiliert, jedoch beim Testausführen gibt es immense probleme (zb das Missachten Junit 4 Annotationen und daraus resultierende fehlgeschlagene Tests).

Fügt man genau die gleichen libraries als direkte Abhängigkeit in den Projekten rein so klappt alles ohne Probleme....

Auch das Projekt-A POM als Parent pom anzugeben hat den gleichen Effekt, dass manche Tests scheitern.

Kann mir einer sagen warum ? und wie man es am Besten löst ?

Ziel ist es, dass die einzelnen Projekte sich nicht um die Anzahl der libs bzw deren Version kümmern sollen, sondern sich auf eine pom (als dependency am liebsten) stützen können...

Danke
 
ah der Praktikant hats gefunden... lol

im Projekt-A musste man nochmal explizit den compiler auf java 1.6 (wahr. ginge auch 1.5) stellen.

whau... das war mal ein offensichtlicher, intuitiver Fehler.

BTW.... warum in der Welt nutzt der maven compiler per default 1.4 ?
 
Hast du die Probleme nur in Eclipse, oder auch von der Kommandozeile aus?

Problematisch kann es werden, wenn Projekt B Abhängigkeiten definiert, die sich mit den Projekt Abhängikeiten "beissen" (Versionkonflikte), werden die Dependencies der von Projekt B vorrangig behandelt, weil die Projekt A dependencies transitiv sind und damit eine "Stufe niedriger" prioritisiert.

Ziel ist es, dass die einzelnen Projekte sich nicht um die Anzahl der libs bzw deren Version kümmern sollen, sondern sich auf eine pom (als dependency am liebsten) stützen können...
Würde jedes Modul/Projekt seine Abhängigkeiten definieren lassen, so hast du den überblick, versionen bekommt man mit dem <DependencyManagement> Element der Parent-Pom in den Griff.

Gehe mal davon aus, dass du die aktuellste Maven Version (2.2.1) nutzt, vorgänger hatten Probleme mit dem CP wenn eine Lib in mehreren Versionen auftauchte.
 
Hallo,

BTW.... warum in der Welt nutzt der maven compiler per default 1.4 ?
Man nehme die aktuelle Version des Compiler Plugins und schon ist der default 1.5
Code:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
Siehe auch Doku dazu...

Gruß
Karl Heinz Marbaise
 

Neue Themen


Zurück
Oben