Io uso Apache Maven per gestire le mie librerie Java (jar) e alcuni progetti che usano le librerie. Per motivi di convenienza, utilizzo mvn eclipse:eclipse
per generare file di progetto Eclipse che possono essere importati nell'area di lavoro di Eclipse per la modifica.Come dire a Maven di includere la dipendenza jar, non la directory sorgente del sottoprogetto in Eclipse?
I problemi sorgono quando si modifica il progetto principale ei progetti di lib Java nello stesso spazio di lavoro di Eclipse. Vale a dire, mvn eclipse:eclipse
include percorso src dipendenza nel file .classpath
, non la dipendenza jar
come previsto.
Supponiamo di avere un progetto di libreria Java denominato mylib
. Il file jar corrispondente mylib.jar
è stato distribuito su un repository Maven privato gestito da me. Per utilizzare mylib.jar nel progetto principale, la seguente dipendenza è inclusa in pom.xml
.
<!-- pom.xml for the main project -->
<dependency>
<groupId>namespace.my</groupId>
<artifactId>mylib</artifactId>
<version>[1.0,)</version>
</dependency>
mvn compile
e mvn test
lavoro perfetto, in cui mylib.jar
viene scaricato automaticamente dal mio repo. Tuttavia, quando provo mvn eclipse:eclipse
, trovo che il file .classpath
generato non include la dipendenza mylib.jar
come previsto. Invece, include la directory dei file di origine per mylib come segue.
<!-- .classpath file generated by mvn eclipse:eclipse -->
<classpathentry kind="src" path="/mylib"/>
Sembra che Maven legge i metadati di Eclipse e trova mylib e le principali coexits progetto nella stessa area di lavoro. Pertanto, Maven include la fonte del mio bene. Dannazione. Come posso dire a Maven di ignorare l'origine del progetto locale e includere solo il file jar?
Perché don' t invece usi il plugin Eclipse di m2e? –
Perché mi sento a mio agio a digitare i comandi nella console: la compilazione, il test, il packaging sono tutti eseguiti in un unico comando. Inoltre, utili segmenti di configurazione in pom.xml possono essere facilmente riutilizzati in altri progetti. Eclipse è buono, ma troppi menu e numerosi plug-in mi sembrano complicati. –
I due non sono necessariamente mutuamente esclusivi, anche se dovresti rinunciare al plugin Maven Eclipse per usare m2e. Trovo Eclipse conveniente per il debugging e m2e garantisce che il processo di compilazione sia il più simile possibile all'interno e all'esterno di Eclipse. –