Qual è il significato del file POM che Maven posti in un file JAR, è vero utilizzati da qualcosa?

StackOverflow https://stackoverflow.com/questions/1677994

  •  16-09-2019
  •  | 
  •  

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.

È stato utile?

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 in META-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,

  1. risoluzione automatica delle dipendenze.
  2. Distribuzione di JAR. E 'possibile estrarre pom.xml da JAR automaticamente.
  3. controllo di integrità da repository (JAR corrisponde POM).

Non so se qualcuno di queste funzionalità sono implementate ovunque. È possibile ignorare di sicuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top