java - producto - preguntas para crear un empaque
¿Cómo creo un nuevo tipo de empaque para Maven? (2)
Para hacer lo que describiste, crea un proyecto Maven con un contenedor jar (como se indica here , ya que no habrá definiciones de mojo). En la subcarpeta src / main / resources / META-INF / plexus, cree un components.xml con los siguientes contenidos (suponiendo que desea que el tipo de paquete sea "my-custom-type", cámbielo a "foobar" si deseo).
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>my-custom-type</role-hint>
<implementation>
org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
</implementation>
<configuration>
<phases>
<!--use the basic jar lifecycle bindings, add additional
executions in here if you want anything extra to be run-->
<process-resources>
org.apache.maven.plugins:maven-resources-plugin:resources
</process-resources>
<package>
org.apache.maven.plugins:maven-jar-plugin:jar
</package>
<install>
org.apache.maven.plugins:maven-install-plugin:install
</install>
<deploy>
org.apache.maven.plugins:maven-deploy-plugin:deploy
</deploy>
</phases>
</configuration>
</component>
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>my-custom-type</role-hint>
<implementation>
org.apache.maven.artifact.handler.DefaultArtifactHandler
</implementation>
<configuration>
<!--the extension used by Maven in the repository-->
<extension>foobar</extension>
<!--the type used when specifying dependencies etc.-->
<type>my-custom-type</type>
<!--the packaging used when declaring an implementation of
the packaging-->
<packaging>my-custom-type</packaging>
</configuration>
</component>
</components>
</component-set>
Luego, en un pom que tiene el empaque personalizado, declare el tipo requerido en el elemento de empaque y asegúrese de haber especificado el complemento para que se pueda contribuir con el empaque personalizado. Al declarar <extensiones> verdaderas </ extensiones> le dice a Maven que el complemento contribuye con los manejadores de paquetes y / o tipos a Maven.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>name.seller.rich</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>my-custom-type</packaging>
<build>
<plugins>
<plugin>
<groupId>name.seller.rich.maven.plugins</groupId>
<artifactId>maven-foobar-plugin</artifactId>
<version>0.0.1</version>
<!--declare that this plugin contributes the component extensions-->
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
Cuando el proyecto está empaquetado, será un jar, con una extensión .jar; sin embargo, cuando se instala / implementa, Maven entregará el archivo al repositorio con la extensión ".foobar" como se especifica en components.xml
Tengo un requisito para crear archivos jar con Maven, pero necesitan ser instalados en el repositorio con una extensión "foobar", y sería bueno si tuvieran su propio tipo de empaquetado para que podamos identificar esos artefactos por el empaque.
¿Puedo configurar un nuevo tipo de empaque para hacer esto?
Seguimiento de la respuesta original de Rich Seller:
Si, como recomienda, utiliza una jar
tipo de embalaje, probablemente en el proyecto donde hace referencia a su complemento recibirá:
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] The plugin descriptor for the plugin Plugin [com.ocado.mvn.packaging:Jar-Gem] was not found. Please verify that the plugin JAR /home/ndb/.m2/repository/com/ocado/mvn/packaging/Jar-Gem/1.0.0/Jar-Gem-1.0.0.jar is intact.
Esto se debe a que no existe un descriptor de complemento en el JAR que ha generado.
Puede usar lo siguiente para eludir las No mojo definitions..
error que menciona:
<packaging>maven-plugin</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.1</version>
<configuration>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
</plugin>
</plugins>
</build>
Esta configuración se encontró en el ejemplo de documentos de complemento here .
El ciclo de vida del tipo de paquete maven-plugin
tiene el plugin:descriptor
objetivo del plugin:descriptor
vinculado a generate-resources
fase de generate-resources
. Esto se especifica en la documentación oficial de Sonatype .