Comment lier une exécution de plugin à une phase de maven sans m'obliger à spécifier le plugin en ligne de commande
-
05-07-2019 - |
Question
J'ai un simple pom et ajouté un ant-run à la compilation, mais il ne s'exécute que lorsque je fais ce qui suit:
mvn install antrun: run
mvn install - ne traite pas l'ant-run
mvn antrun: run - ne traite pas l'ant-run
Je pensais que le plug-in serait lié à la phase de cycle de vie du plug-in qu'il serait exécuté lorsque j'essayerais de réaliser cette phase. Ce n'est pas ce qui se passe.
Me manque-t-il une nuance? Dois-je disposer d'un profil permettant d'activer le plug-in?
Merci pour l'aide (pom ci-dessous)
<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>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>antecho</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo message="Hello,world"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
La solution
Vous avez spécifié le plug-in sous la section <pluginManagement>
. Cela signifie que cette configuration sera utilisée si le plug-in est également déclaré directement sous build / plugins, par exemple dans un POM enfant.
Pour que cela fonctionne dans cet exemple, supprimez les balises <plugins>
afin que <build>
se trouve juste en dessous de <=> comme ceci:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
...
</plugin>
</plugins>
</build>
Autres conseils
Vous devez ajouter une phase.
exemple:
<executions>
<execution>
<id>xml2fastinfoset</id>
<phase>generate-sources</phase>
<goals>
<goal>xml2fastinfoset</goal>
</goals>
</execution>
</executions>
Vous pouvez trouver cet exemple maven antrun utile.