java - the - mvn version
¿Cuál es el significado del archivo POM que Maven coloca en un archivo JAR? ¿Lo utiliza algo? (2)
Cuando Maven construye un archivo JAR, coloca el archivo POM del módulo dentro (aparentemente en el directorio <groupid> / <artifactid>).
Cuando compilo un archivo JAR desde Ant para implementarlo a través de las tareas de Maven Ant, ¿es importante la presencia de este archivo POM (el que está dentro del JAR)? No parece serlo, pero solo quería estar seguro de que no se está utilizando en ningún lugar, y para confirmar dónde se supone que debe estar exactamente en el archivo JAR.
El pom.xml dentro de JAR está diseñado para los siguientes propósitos,
- Resolución automática de dependencias.
- Despliegue de JAR. Es posible extraer pom.xml de JAR automáticamente.
- Verificación de integridad por repositorio (JAR coincide con POM).
No sé si alguna de estas características se implementa en alguna parte. Puedes ignorarlo seguro.
Los archivos pom.xml
y pom.properties
se empaquetan en el JAR para que cada artefacto producido por Maven se describa a sí mismo y también le permita utilizar los metadatos en su propia aplicación, en caso de que sea necesario. Un simple uso podría ser recuperar la versión de su aplicación.
Dicho esto, la inclusión de estos archivos se puede desactivar si se desea a través de MavenArchiverConfiguration que admite un parámetro booleano addMavenDescriptor y es seguro no incluirlos (incluso si me parece bien tenerlos). Por ejemplo, para un 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>
Con respecto a la ubicación de estos archivos, la documentación de addMavenDescriptor dice:
Si el archivo generado contendrá estos dos archivos de Maven:
- El archivo pom, ubicado en el archivo en
META-INF/maven/${groupId}/${artifactId}/pom.xml
- Un archivo
pom.properties
, ubicado en el archivo enMETA-INF/maven/${groupId}/${artifactId}/pom.properties
El valor por defecto es verdadero.
Esto debería responder a tu pregunta.