2009-11-05 9 views
13

Quando Maven crea un file JAR, inserisce il file POM del modulo all'interno (apparentemente nella directory <groupid>/<artefatto>).Qual è il significato del file POM che Maven inserisce in un file JAR, viene usato da qualcosa?

Quando si crea un file JAR da Ant per essere distribuito tramite le attività di Maven Ant, è importante la presenza di questo file POM (quello all'interno del JAR)? Non sembra essere, ma volevo solo essere sicuro che non venisse usato da nessuna parte, e per confermare dove esattamente nel file JAR dovrebbe essere.

risposta

16

I file pom.xml e pom.properties vengono impacchettati nel JAR in modo che ogni artefatto prodotto da Maven sia auto-descrittivo e consente inoltre di utilizzare i metadati nella propria applicazione, nel caso si presentasse la necessità. Un semplice utilizzo potrebbe essere quello 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:

Sia l'archivio generato conterrà questi due file Maven:

  • Il file pom, che si trova nell'archivio in META-INF/maven/${groupId}/${artifactId}/pom.xml
  • Un file pom.properties, che si trova nell'archivio in META-INF/maven/${groupId}/${artifactId}/pom.properties

Il valore predefinito è true.

Questo dovrebbe rispondere alla tua domanda.

+0

"I file pom.xml e pom.properties sono impacchettati nel JAR in modo che ogni artefatto prodotto da Maven sia auto-descrittivo e consente anche di utilizzare i metadati nella propria applicazione, in caso di necessità" - può mi dai esempi sul motivo per cui la mia app avrebbe bisogno dei metadati in un file pom? –

3

Il pom.xml all'interno JAR è stato progettato per seguenti scopi,

  1. risoluzione automatica delle dipendenze.
  2. Distribuzione di JAR. È possibile estrarre pom.xml da JAR automaticamente.
  3. Controllo di integrità per repository (JAR corrisponde a POM).

Non so se alcune di queste funzionalità siano implementate ovunque. Puoi ignorarlo di sicuro.

Problemi correlati