You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Maven构建的JMeter项目跨主机免重建运行?

实现JMeter Maven项目的可移植运行方案

1. 调整Maven配置,打包完整运行包

修改项目的pom.xml,添加maven-assembly-plugin插件,让构建产物包含所有JMeter依赖、测试脚本、配置文件及必要的目录结构:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <mainClass>org.apache.jmeter.NewDriver</mainClass> <!-- JMeter主类 -->
                            </manifest>
                        </archive>
                        <includeBaseDirectory>true</includeBaseDirectory>
                        <files>
                            <!-- 包含JMeter测试脚本 -->
                            <file>
                                <source>${Project.jmx}</source>
                                <outputDirectory>/testFiles</outputDirectory>
                            </file>
                            <!-- 包含自定义启动脚本 -->
                            <file>
                                <source>run-jmeter.sh</source>
                                <outputDirectory>/</outputDirectory>
                                <fileMode>0755</fileMode>
                            </file>
                            <file>
                                <source>run-jmeter.bat</source>
                                <outputDirectory>/</outputDirectory>
                            </file>
                        </files>
                        <descriptors>
                            <!-- 自定义目录结构,创建logs、results空目录 -->
                            <descriptor>assembly.xml</descriptor>
                        </descriptors>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

同时在项目根目录创建assembly.xml,定义目录结构:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
    <id>dist</id>
    <formats>
        <format>zip</format>
        <format>tar.gz</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/logs</directory>
            <outputDirectory>/logs</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.build.directory}/results</directory>
            <outputDirectory>/results</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.build.directory}/testFiles</directory>
            <outputDirectory>/testFiles</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

2. 编写跨平台启动脚本

  • Linux/Mac脚本(run-jmeter.sh):
#!/bin/bash
java -jar ${PWD}/jmeter-project-1.0-SNAPSHOT-jar-with-dependencies.jar \
-JNrOperators=$1 \
-JProject.jmx=testFiles/$2 \
-Jtarget=$3 \
-l results/result.jtl \
-j logs/jmeter.log
  • Windows脚本(run-jmeter.bat):
@echo off
java -jar %cd%\jmeter-project-1.0-SNAPSHOT-jar-with-dependencies.jar ^
-JNrOperators=%1 ^
-JProject.jmx=testFiles/%2 ^
-Jtarget=%3 ^
-l results/result.jtl ^
-j logs/jmeter.log

3. 在主机A构建并打包

执行构建命令,生成包含所有依赖的归档包:

mvn clean verify "-DNrOperators=3" -DProject.jmx=Myproject.jmx -Dtarget=Test

构建完成后,target目录下会生成类似jmeter-project-1.0-SNAPSHOT-dist.zip或jmeter-project-1.0-SNAPSHOT-dist.tar.gz的归档包,这就是完整的可移植运行包。

4. 主机B上直接运行

  • 将归档包复制到主机B的任意目录,解压:
    # Linux/Mac
    tar -zxvf jmeter-project-1.0-SNAPSHOT-dist.tar.gz
    # Windows
    直接解压zip文件
    
  • 进入解压后的目录,执行启动脚本(确保主机B已安装兼容版本的JDK):
    # Linux/Mac
    ./run-jmeter.sh 3 Myproject.jmx Test
    # Windows
    run-jmeter.bat 3 Myproject.jmx Test
    

关键注意事项

  • 主机B不需要安装Maven,仅需安装与主机A版本兼容的JDK(JMeter对JDK版本有要求,需提前确认)
  • 所有动态参数(如NrOperators、Project.jmx)都通过启动脚本传入,避免硬编码到构建产物中
  • 若测试脚本依赖外部资源,需确保这些资源也被包含在归档包内

内容的提问来源于stack exchange,提问作者Tocotti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:11:09