para hacer lo que usted ha descrito, cree un proyecto Maven con el empaquetado frasco (como se indica here, ya que no habrá definiciones 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 es tener el empaque a la medida, declarar el tipo requerido en el elemento de embalaje, y asegúrese de que ha especificado el plugin por lo que el envase personalizado se puede contribuir. Al declarar <extensiones> true </extensiones >, le informa a Maven que el complemento proporciona controladores de tipo de embalaje y/o tipo 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 se empaqueta el proyecto, será un frasco, con una extensión .jar, sin embargo cuando se instala/desplegado, Maven entregará el archivo al repositorio con la extensión ".foobar" como se especifica en components.xml
¿hay alguna manera de tener el archivo creado en el proyecto con la extensión foobar? –
y te refieres a MET-INF o META-INF? –
Creo que para hacer eso tendrías que reemplazar el archivador jar con una implementación personalizada o, alternativamente, utilizar un lifecycle.xml para vincular una invocación de plugin de ensamblaje a una fase (según tu otra pregunta: http: // stackoverflow. com/questions/1427740/how-do-i-execute-a-set-of-goals-before-my-maven-plugin-runs/1427783 # 1427783) –