J'utilise un plugin différent (ant4Eclipse) pour stocker mes fichiers. Quelle est la meilleure façon d'éviter l'exécution du plugin maven-jar?
<plugin>maven-jar-plugin</plugin>
<exclude> ** / * < / exclude>
<skip>true</skip>
Aucun n'a fonctionné
Dans Maven 3.0.x (j'ai essayé 3.0.2), vous pouvez désactiver maven-jar-plugin
en liant le default-jar
exécution dans une phase inexistante, comme @ bmargulies suggéré . Malheureusement, cela ne fonctionne pas dans 2.2.1, mais vous pouvez l'empêcher d'interférer avec votre propre pot en définissant une alternative <finalName>
et <classifier>
pour le default-jar
exécution; il créera toujours un bocal, mais il sera défini comme un artefact secondaire pour le projet et n'écrasera pas celui que vous avez créé. Voici un exemple qui devrait fonctionner à la fois dans Maven 2 et 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>none</phase>
<configuration>
<finalName>unwanted</finalName>
<classifier>unwanted</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Une fois que vous avez désactivé maven-jar-plugin
, maven-install-plugin
peut aussi vous causer des ennuis. Dans Maven 3, il peut être désactivé comme maven-jar-plugin
: lier default-install
à une phase inexistante. Cependant, dans Maven 2 maven-install-plugin
requiert que le target/classes
existe et il installera le pot factice lorsqu'il n'y a pas d'artefact principal présent.
Cela devrait faire l'affaire - notez l'utilisation de <id>default-jar</id>
et <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>
Dans mon cas, je voulais seulement désactiver le plugin jar car le pot était vide. Vous pouvez utiliser l'option skipIfEmpty
dans la configuration du plugin
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<skipIfEmpty>true</skipIfEmpty>
</configuration>
</plugin>
Que se passe-t-il si vous le déclarez?
<packaging>pom</packaging>
Même s'il fait ce que vous recherchez, soyez prudent. Je ne sais pas s'il pourrait y avoir des effets secondaires négatifs - tels que d'autres projets Maven qui dépendent de votre pot ne pouvant pas le localiser.
En utilisant maven 3.3.9, ce qui suit a fonctionné pour moi:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>default-jar</id>
<phase>none</phase>
<configuration>
<finalName>unwanted</finalName>
<classifier>unwanted</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Donc, dans le cas du plugin maven-jar, je l'ai lié à une phase inexistante. Pour le plugin maven-install, j'ai utilisé le paramètre de configuration "skip". Le documentation à ce sujet indique: "Définissez-le sur true pour contourner l'installation des artefacts. Utilisez-le pour les artefacts qui n'ont pas besoin d'être installés dans le référentiel local."
Liez explicitement le plugin jar à une phase qui n'existe pas.
Comme d'autres l'ont dit, il n'est pas possible de le désactiver, sauf en utilisant <packaging>pom</packaging>
, qui désactive tout et n'est probablement pas ce que vous voulez.
Même s'il générera deux fois, une solution de travail consiste à lier votre processus jar à la phase package
, car cela est garanti pour s'exécuter après la valeur par défaut. En écrasant le même fichier JAR, vous constaterez que le vôtre est utilisé là où l'original aurait été.
J'utilise un plugin différent pour stocker mes fichiers. Quelle est la meilleure façon d'éviter l'exécution du plugin maven-jar?
Premièrement la jar:jar
l'objectif est lié par défaut sur la phase package
pour un projet avec un packaging de type jar
. Deuxièmement, il n'y a aucun moyen de dissocier un plugin lié à une phase. Donc, si vous utilisez un autre plugin (?), Acceptez de produire 2 JAR ou de changer le packaging (mais je ne pense pas que cela fonctionnera bien).