Servizio MAVEN utilizzato per il grafico della dipendenza
Domanda
Ho appena scaricato il plugin Eclipse m2e
e lo adoro!Mi chiedo quale servizio Web utilizza per risolvere tutte le dipendenze transitive di un progetto.
i assumere che funziona ansuando tutti gli elementi <dependency>
fuori dal progetto pom.xml
e utilizza un servizio per interrogare MAVEN per ogni dipendenza transitiva.
Fondamentalmente, sto chiedendo: In che modo m2e
popola la cache MAVEN locale memorizzata su ~/.m2
?
Soluzione
Il plugin funziona uguale a maven riga di comando Progam mvn.
Supponendo il file delle impostazioni del POM e Maven del tuo progetto non modifica le impostazioni del repository predefinite Maven scaricheranno i file da Maven Central
http://repo1.maven.org/maven2/
Quindi prendere una dipendenza come segue:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
.
MAVEN utilizzerà la seguente convenzione URL (layout del repository Maven2):
<Repository URL>/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>
.
Per scaricare 2 file:
- .
- http://repo1.maven. org / maven2 / log4j / log4j / 1.2.16 / log4j-1.2.16.pom
- http://repo1.maven. org / maven2 / log4j / log4j / 1.2.16 / log4j-1.2.16.jar
Il primo è il modulo Pom, il cui elemento Packaging indicherà l'estensione del nome del file da utilizzare quando si scarica il secondo file (impostazioni predefinite su "JAR").
Alla fine Maven leggerà ricorsiva ricorsivamente i file POM associati ad altre dipendenze elencate nel POM e decidono quali altri moduli da scaricare (dipendenze delle dipendenze)
Altri suggerimenti
eseguendo il normale processo di risoluzione della dipendenza di Maven;Per ogni dipendenza risolve ricorsivamente le dipendenze transitive.Il "servizio" è solo una query delle Poms delle dipendenze da qualsiasi repository di Maven configurata.
Non sono sicuro di come m2e lo faccia specificamente, ma puoi fare lo stesso sulla riga di comando utilizzando mvn dependency:tree
.Quel comando supporta vari formati di output: testo, punto, graphml, TGF.Vedi Maven dipendenza plugin docs .