2013-12-10 109 views
2

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

的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>[email protected]</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 protected]</receiver> 
     </receivers> 
     <fileSets> 
      <fileSet> 
       <directory>${project.build.directory}/jmeter/results</directory> 
       <includes> 
        <include>LoadTestPlan.html</include> 
       </includes> 
      </fileSet> 
      </fileSets> 
     </configuration> 
     </execution> 
     </executions> 
    </plugin> 

回答

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> 

所以默认情况下此配置文件不活跃,和插件不会执行。在詹金斯将配置构建要执行如下:

mvn clean install -Dbuild.environment=jenkins

由于轮廓有一个id您还可以配置詹金斯按名称具体使用的配置文件如下:

mvn clean install -Pci-environment

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

+1

非常详细的答案,非常感谢! – c12

+0

很高兴听到它的帮助。 – DB5