Search code examples
javamaven-2

conditionally execute maven plugins


I have some Maven plugins configured in my pom.xml. I only want to execute these plugins if the tests are being run (tests may be skipped using either -Dmaven.test.skip=true or -DskipTests).

One of these plugins is bound to the process-classes build lifecycle phase and the other is bound to the pre-integration-test phase.


Solution

  • You can use profile with special activation conditions like this:

    <project>
      ...
      <profiles>
        <profile>
          <id>my-test-plugins</id>
    
          <activation>
            <property><name>!maven.test.skip</name></property>
            <property><name>!skipTests</name></property>
          </activation>
          <build>
            <plugins>
    
          <!-- define your plugins here -->
    
            </plugins>
          </build>
        </profile>
      </profiles>
    </project>
    

    More info you can find here:

    http://books.sonatype.com/mvnref-book/reference/profiles-sect-activation.html