tutorial que proyecto pom plugin generar crear compiler java maven-2 ant jar maven-plugin

java - que - pom maven



¿Cuál es la mejor manera de evitar maven-jar? (8)

Estoy usando un complemento diferente (ant4eclipse) para archivar mis archivos. ¿Cuál es la mejor manera de evitar la ejecución del plugin maven-jar?

  • Traté de eliminar el <plugin>maven-jar-plugin</plugin>
  • Intenté <exclude> ** / * < / exclude>
  • Traté de <skip>true</skip>

Ninguno funcionó


Estoy usando un complemento diferente para jar mis archivos. ¿Cuál es la mejor manera de evitar la ejecución del plugin maven-jar?

Primero, el objetivo jar:jar está vinculado por defecto en la fase del package para un proyecto con un paquete de tipo jar . En segundo lugar, no hay forma de desvincular un complemento vinculado a una fase. Entonces, si está usando otro complemento (?), Acepte producir 2 JAR o cambie el empaque (pero no creo que esto funcione bien).


¿Qué pasa si declaras esto?

<packaging>pom</packaging>

Incluso si hace lo que estás buscando, ten cuidado. No estoy seguro de si podría haber efectos secundarios negativos, como otros proyectos maven que dependen de que tu contenedor no pueda ubicarlo.


Como han dicho otros, no es posible desactivarlo, excepto usar <packaging>pom</packaging> , que apaga todo y probablemente no es lo que quieres.

Aunque generará dos veces, una solución de trabajo es unir el proceso de jar a la fase del package , ya que se garantiza que se ejecutará después del valor predeterminado. Al sobreescribir el mismo archivo JAR, encontrará que el suyo se usa donde sea que haya estado el original.


En Maven 3.0.x (Probé 3.0.2) puede deshabilitar maven-jar-plugin vinculando la ejecución de default-jar a una fase inexistente, como se sugirió @bmargulies . Lamentablemente, eso no funciona en 2.2.1, pero puede evitar que interfiera con su propio jar configurando una alternativa <finalName> y <classifier> para la ejecución del default-jar por default-jar ; seguirá creando un jar, pero se establecerá como un artefacto secundario para el proyecto y no sobrescribirá el que ha creado. Aquí hay un ejemplo que debería funcionar tanto en Maven 2 como en Maven 3:

<project> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>test</artifactId> <version>0.1-SNAPSHOT</version> <build> <plugins> <plugin> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <id>default-jar</id> <phase>never</phase> <configuration> <finalName>unwanted</finalName> <classifier>unwanted</classifier> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>

Una vez que hayas desactivado maven-jar-plugin , maven-install-plugin puede darte problemas. En Maven 3 se puede desactivar de la misma manera que maven-jar-plugin : bind default-install a una fase inexistente. Sin embargo, en Maven 2 maven-install-plugin requiere que el directorio target/classes exista, e instalará el frasco ficticio cuando no haya un artefacto primario presente.


En mi caso, solo quería desactivar el plugin jar porque el jar estaba vacío. Puede usar la opción skipIfEmpty en la configuración del complemento

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <skipIfEmpty>true</skipIfEmpty> </configuration> </plugin>


Esto debería ser el truco: observe el uso de <id>default-jar</id> y <phase/> .

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>default-jar</id> <phase/> </execution> </executions> </plugin> </plugins> </build>


Vincular explícitamente el plugin jar a una fase que no existe.


<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin>