Qual è il significato del file POM che Maven posti in un file JAR, è vero utilizzati da qualcosa?
Domanda
Quando Maven crea un file JAR, si pone il file POM del modulo interno (apparentemente nella directory
Quando costruisco un file JAR da Ant per essere distribuito tramite i compiti Maven Ant, è la presenza di questo file POM (l'uno dentro l'JAR) importante? Non sembra essere, ma volevo solo essere sicuro che non viene utilizzato ovunque, e per confermare esattamente dove nel file JAR che si suppone che sia.
Soluzione
I file pom.xml
e pom.properties
sono confezionati nella JAR in modo che ogni manufatto prodotto dalla Maven è auto-descrizione e permette anche di utilizzare i metadati nella propria applicazione, in caso di necessità. Un uso semplice potrebbe essere quella di recuperare la versione dell'applicazione.
Detto questo, l'inclusione di questi file può essere disattivato se desiderata attraverso MavenArchiverConfiguration che ammette un valore booleano addMavenDescriptor parametro ed è sicuro di non includerli (anche se lo trovo bello avere loro). Ad esempio per una JAR:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
</plugin>
</plugins>
...
</build>
...
</project>
Per quanto riguarda la posizione di questi file, la documentazione di addMavenDescriptor dice:
Se l'archivio generato conterrà questi due file Maven:
- Il file pom, che si trova in archivio in
META-INF/maven/${groupId}/${artifactId}/pom.xml
pom.properties
di file, che si trova nell'archivio inMETA-INF/maven/${groupId}/${artifactId}/pom.properties
Il valore predefinito è vero.
Questo dovrebbe rispondere alla tua domanda.
Altri suggerimenti
Il pom.xml all'interno JAR è progettato per scopi seguente,
- risoluzione automatica delle dipendenze.
- Distribuzione di JAR. E 'possibile estrarre pom.xml da JAR automaticamente.
- controllo di integrità da repository (JAR corrisponde POM).
Non so se qualcuno di queste funzionalità sono implementate ovunque. È possibile ignorare di sicuro.