Manish Menaria
Manish Menaria

Reputation: 27401

How to include plugin in maven for test build only?

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

Answers (2)

khmarbaise
khmarbaise

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

Christoph B&#246;hme
Christoph B&#246;hme

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

Related Questions