Ich benutze Apache Maven, um meine Java-Bibliotheken (jar) und einige der Projekte zu verwalten, die die Bibliotheken benutzen. Zur Vereinfachung verwende ich mvn eclipse:eclipse
, um Eclipse-Projektdateien zu generieren, die zur Bearbeitung in den Eclipse-Arbeitsbereich importiert werden können.Wie kann man Maven sagen, dass es die Jar-Abhängigkeit und nicht das Quellverzeichnis des Unterprojekts in Eclipse einbeziehen soll?
Probleme entstehen, wenn ich das Hauptprojekt und die Java-Lib-Projekte im selben Eclipse-Arbeitsbereich bearbeite. Das heißt, mvn eclipse:eclipse
enthält src Pfad Abhängigkeit in .classpath
Datei, nicht die jar
Abhängigkeit wie erwartet.
Angenommen, ich habe ein Jave lib-Projekt mit dem Namen mylib
. Die entsprechende JAR-Datei mylib.jar
wurde in einem von mir unterhaltenen privaten Maven Repo bereitgestellt. Um mylib.jar im Hauptprojekt zu verwenden, ist die folgende Abhängigkeit in pom.xml
enthalten.
<!-- pom.xml for the main project -->
<dependency>
<groupId>namespace.my</groupId>
<artifactId>mylib</artifactId>
<version>[1.0,)</version>
</dependency>
mvn compile
und mvn test
Arbeit perfekt, in der mylib.jar
automatisch aus meinem Repo heruntergeladen. Beim Versuch, mvn eclipse:eclipse
auszuprobieren, finde ich jedoch, dass die generierte .classpath
-Datei die mylib.jar
-Abhängigkeit nicht wie erwartet enthält. Stattdessen enthält es Quelldateiverzeichnis für Mylib wie folgt.
Es scheint, dass Maven Eclipse-Metadaten liest und mylib und das Hauptprojekt in demselben Arbeitsbereich findet. Daher enthält Maven die Quelle für mein Wohl. Verdammt. Wie kann ich sagen, dass maven die lokale Projektquelle ignoriert und nur die JAR-Datei einfügt?
Warum don‘ nst du stattdessen das m2e Eclipse Plugin? –
Weil ich mich wohl fühle, Befehle in der Konsole einzugeben - Kompilierung, Test, Verpackung werden alle in einem Befehl ausgeführt. Außerdem können nützliche Konfigurationssegmente in pom.xml problemlos in anderen Projekten wiederverwendet werden. Eclipse ist gut, aber zu viele Menüs und zahlreiche Plugins sehen für mich kompliziert aus. –
Die beiden schließen sich nicht unbedingt gegenseitig aus, obwohl Sie auf das Maven Eclipse-Plugin verzichten müssen, um m2e zu verwenden. Ich finde Eclipse praktisch zum Debuggen und m2e garantiert, dass der Build-Prozess innerhalb und außerhalb von Eclipse so ähnlich wie möglich ist. –