Reputation: 27401
I want to add the plugin in the maven project. I want it to be added to build only when I build the project for testing purpose.
I found that <scope>
can be used for dependency as shown below
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback</artifactId>
<version>0.5</version>
<scope>test</scope>
</dependency>
As you can see here <scope>test</scope>
is used.
I want similar thing for plugin. For example this is my plugin code snipplet
<build>
<plugins>
<plugin>
<groupId>org.jibx</groupId>
<artifactId>jibx-maven-plugin</artifactId>
<version>1.2.4</version>
<executions>
<execution>
<goals>
<goal>bind</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Upvotes: 1
Views: 2868
Reputation: 97359
You can bind a plugin via executions to a phase:
<build>
<plugins>
<plugin>
<groupId>org.jibx</groupId>
<artifactId>jibx-maven-plugin</artifactId>
<version>1.2.4</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>bind</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
The problem I see that usually this plugin runs in process-classes
phase which has been done on purpose by the plugin authors..So I don't the request to use it only in the test phase...
Upvotes: 1
Reputation: 4001
You can create a profile which you activate in your test builds:
<profiles>
<profile>
<id>testing</id>
<build>
<plugins>
<plugin>
<groupId>org.jibx</groupId>
<artifactId>jibx-maven-plugin</artifactId>
<version>1.2.4</version>
<executions>
<execution>
<goals>
<goal>bind</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profile>
Then you invoke mvn with the parameter -P testing
to activate your profile:
mvn test -P testing
In addition to activating a profile manually, profiles can also be activated automatically based on conditions such as the existence of a environment variable or a specific file. You can find more information on this in the Maven introduction on profiles.
Upvotes: 3