有条件地执行JMeter Maven插件

时间:2013-12-10 07:20:41

标签: java maven jenkins jmeter jmeter-maven-plugin

我正试图弄清楚如何有条件地执行我的JMeter性能测试计划。我想让我的Jenkins CI作业执行它,但是当开发人员运行mvn clean install时,我不想让下面的插件运行。关于如何修改我的pom.xml以有条件地运行以下插件的任何想法?

Maven POM.xml JMeter插件:

<plugin>
    <groupId>com.lazerycode.jmeter</groupId>
        <artifactId>jmeter-maven-plugin</artifactId>
        <version>1.8.1</version>
        <executions>
         <execution>
          <id>jmeter-tests</id>
          <phase>verify</phase>
          <goals>
           <goal>jmeter</goal>
          </goals>
         </execution>
        </executions>
        <configuration>
         <testFilesDirectory>${project.basedir}/src/test/jmeter</testFilesDirectory>
         <ignoreResultFailures>true</ignoreResultFailures>
         <testResultsTimestamp>false</testResultsTimestamp>
        </configuration>
       </plugin>
       <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>xml-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
     <execution>
      <phase>verify</phase>
      <goals>
       <goal>transform</goal>
      </goals>
     </execution>
    </executions>
    <configuration>
     <transformationSets>
      <transformationSet>
       <dir>${project.build.directory}/jmeter/results</dir>
       <stylesheet>${project.basedir}/src/test/resources/jmeter-results-detail-report_21.xsl</stylesheet>
       <outputDir>${project.build.directory}/jmeter/results</outputDir>
       <fileMappers>
        <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.RegExpFileMapper">
         <pattern>(.*?)\s(.*?)</pattern>
         <replacement>$1$2</replacement>
         <replaceAll>true</replaceAll>
        </fileMapper>
        <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
         <targetExtension>.html</targetExtension>
        </fileMapper>
       </fileMappers>
      </transformationSet>
     </transformationSets>
    </configuration>
   </plugin>
   <plugin>
      <groupId>ch.fortysix</groupId>
      <artifactId>maven-postman-plugin</artifactId>
      <version>0.1.2</version>
      <executions>
       <execution>
        <id>send a mail</id>
        <phase>install</phase>
        <goals>
         <goal>send-mail</goal>
        </goals>
        <inherited>false</inherited>
        <configuration>
         <from>admin@test.com</from>
         <subject>Load Test Results</subject>
         <failonerror>true</failonerror>
         <mailhost>relay.apple.com</mailhost>
         <htmlMessageFile>${project.build.directory}/jmeter/results/LoadTestPlan.html</htmlMessageFile>
         <receivers>
            <receiver>email@me.com</receiver>
         </receivers>
         <fileSets>
            <fileSet>
                <directory>${project.build.directory}/jmeter/results</directory>
                <includes>
                    <include>LoadTestPlan.html</include>
                </includes>
            </fileSet>
          </fileSets>
         </configuration>
       </execution>
      </executions>
     </plugin>

1 个答案:

答案 0 :(得分:5)

实现此目标的最佳方法是使用profiles。您定义包含插件配置的配置文件。默认情况下,此配置文件将被关闭(因此,当开发人员执行mvn clean install时,它不会被激活),并且您只会在Jenkins工作期间激活它。

所以例如在你的pom中,你会有这样的东西:

<project>
    ...
    <profiles>
        <profile>
            <id>ci-environment</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>build.environment</name>
                    <value>jenkins</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.lazerycode.jmeter</groupId>
                        <artifactId>jmeter-maven-plugin</artifactId>
                        <!-- rest of your jmeter configuration goes here -->
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>xml-maven-plugin</artifactId>
                        <!-- rest of your xml-maven configuration goes here -->
                    </plugin>
                    <plugin>
                        <groupId>ch.fortysix</groupId>
                        <artifactId>maven-postman-plugin</artifactId>
                        <!-- rest of your postman configuration goes here -->
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

因此,默认情况下,此配置文件不活动,插件不会执行。在Jenkins上,您可以按如下方式配置构建:

mvn clean install -Dbuild.environment=jenkins

由于个人资料有id,您还可以将Jenkins配置为按名称专门使用个人资料,如下所示:

mvn clean install -Pci-environment

有关激活配置文件的可能方法的详细信息,请参阅以下sonatype资源: http://books.sonatype.com/mvnref-book/reference/profiles-sect-activation.html