【问题标题】:Conditionally Execute JMeter Maven Plugin有条件地执行 JMeter Maven 插件
【发布时间】:2013-12-27 14:40:53
【问题描述】:

我试图弄清楚如何有条件地执行我的 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>

【问题讨论】:

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


    【解决方案1】:

    最好的方法是使用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

    【讨论】:

    • 很高兴听到它有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多