2010-02-03 8 views
33

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

  • me trataron de quitar el <plugin>maven-jar-plugin</plugin>
  • Traté de <exclude> **/* </exclude>
  • Traté de <skip>true</skip>

ninguno me fue

+0

http://stackoverflow.com/questions/12809559/remove-jar-created-by-default-in-maven – fjjiaboming

Respuesta

1

¿Qué ocurre si se declara esto?

<packaging>pom</packaging> 

Incluso si hace lo que está buscando, tenga 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.

+0

Para ello sería necesario que vuelva a enlazar todos los objetivos , ya que desactivará la compilación, las pruebas, etc. –

0

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

En primer lugar, el objetivo es jar:jarbound by default en la fase package para un proyecto con un embalaje 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).

+2

"no hay forma de desvincular un complemento vinculado a una fase" - ¿no es eso lo que hace '' en la respuesta anterior? –

3

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

+0

¿Estás seguro? Lo intenté y aún veo '[INFO] [jar: jar {execution: default-jar}]'. –

+0

He hecho que el complemento de origen desaparezca de esta manera, pero nunca he tenido que deshacerme del plugin jar, por lo que no estoy seguro. – bmargulies

1

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

Aunque se generará dos veces, una solución de trabajo es vincular el proceso de jar a la fase 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.

40

En Maven 3.0.x (Probé 3.0.2) puede deshabilitar maven-jar-plugin vinculando la ejecución default-jar a una fase inexistente, como @bmargulies suggested. Desafortunadamente 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 de default-jar; seguirá creando un jar, pero se establecerá como un artefacto secundario para el proyecto y no sobrescribirá el que ha creado. He aquí un ejemplo que debería funcionar tanto en Maven Maven 2 y 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 ha desactivado maven-jar-plugin, maven-install-plugin puede darle problemas también. En Maven 3 se puede deshabilitar igual que maven-jar-plugin: enlazar default-install a una fase inexistente. Sin embargo, en Maven 2 maven-install-plugin se requiere que exista el directorio target/classes, y se instalará el frasco ficticio cuando no haya un artefacto primario presente.

+1

Gracias, esto es genial. Hice lo mismo nunca con maven-war-plugin y pude cerrar al chico malo. :-) –

+1

Estaba confundido de donde obtuve el id de ejecución 'jar-default'. Me tomó un tiempo darme cuenta de que Maven imprime esa identificación durante cada ejecución: '[INFO] --- maven-install-plugin: 2.3.1: install (instalación predeterminada) @ myproj ---' En este caso es 'default-install', pero es similar para cualquier otro complemento. Gracias por la muestra. – JBert

+6

Creo que debería cambiar ' nunca' a ' ninguno' porque "nunca" no es una fase válida para maven-jar-plugin. –

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

no lo hace trabajo (al menos no para mí dentro de IDE usando Maven 3.0.4 – ZachOfAllTrades

+0

La configuración mencionada anteriormente es incorrecta - No veo ninguna opción en la configuración racionar. Hay, sin embargo esta opción: verdadera que trabajará para algunos casos de uso - donde se tiene un módulo que no tiene ninguna clase de su propio - por lo que no quiere que el frasco - pero desea dejar el conjunto de empaquetado en 'jar' (porque configurarlo para confunde Eclipse y Netbeans cuando intenta iniciar el código que está en la ruta de dependencia desde este módulo) https: //maven.apache. org/plugins/maven-jar-plugin/jar-mojo.html – user2163960

+0

Esta es una respuesta incorrecta. El interruptor de omisión hace algo diferente. La documentación dice: "Establezca esto en verdadero para eludir por completo las pruebas de la unidad. Su uso NO SE RECOMIENDA, pero es bastante conveniente en ocasiones". – hennr

22

Esto debería hacer el truco - notar 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> 
+2

Y lo mismo para maven-install-plugin para evitar que * it * se queje de que no se produjo ningún artefacto. –

+2

Esto produce xml no válido. Mi Intelij se queja de la validez xml –

1

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

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