如何解决JMeter Maven插件生成的SSL路径含C\:格式问题
问题
我通过如下pom.xml配置jmeter-maven-plugin来设置4个JMeter系统属性:
<plugin> <groupId>com.lazerycode.jmeter</groupId> <artifactId>jmeter-maven-plugin</artifactId> <version>${jmeter-maven-plugin.version}</version> <configuration> <skipTests>${skipNFTs}</skipTests> <generateReports>true</generateReports> <reportDirectory>${basedir}/target/reports/${performanceTest}</reportDirectory> <logsDirectory>${basedir}/target/reports/${performanceTest}</logsDirectory> <jmeterExtensions> <artifact>org.apache.activemq:activemq-all:jar:5.16.0</artifact> </jmeterExtensions> <junitLibraries/> <propertiesSystem> <javax.net.ssl.trustStore>${project.build.directory}/target/jmeter/keystore/eskort_keystore.keystore</javax.net.ssl.trustStore> <javax.net.ssl.trustStorePassword>P@ssw0rd</javax.net.ssl.trustStorePassword> <javax.net.ssl.keyStore>${basedir}/target/jmeter/keystore/eskort_keystore.keystore</javax.net.ssl.keyStore> <javax.net.ssl.keyStorePassword>P@ssw0rd</javax.net.ssl.keyStorePassword> </propertiesSystem> </plugin>
生成的属性文件内容如下:
#Thu Jun 08 17:42:06 EEST 2023 javax.net.ssl.keyStore=C\:\\MyTools\\GitRepo\\Compliance\\performance/target/jmeter/keystore/eskort_keystore.keystore javax.net.ssl.keyStorePassword=P@ssw0rd avax.net.ssl.trustStore=C\:\\MyTools\\GitRepo\\Compliance\\performance\\targt/target/jmeter/keystore/eskort_keystore.keystore javax.net.ssl.trustStorePassword=P@ssw0rd sun.net.http.allowRestrictedHeaders=true
问题在于路径开头的C\:格式导致该路径不可用,该如何修复?
解决方案
针对Windows系统下路径转义异常的问题,可通过以下几种方式修复:
1. 统一使用Maven内置变量的正确写法
你配置中同时混用了${project.build.directory}和${basedir},且路径存在多余的/target拼接(${project.build.directory}本身就指向target目录),这会导致插件处理路径时出错。建议统一使用${project.build.directory}并全程用正斜杠:
<propertiesSystem> <javax.net.ssl.trustStore>${project.build.directory}/jmeter/keystore/eskort_keystore.keystore</javax.net.ssl.trustStore> <javax.net.ssl.trustStorePassword>P@ssw0rd</javax.net.ssl.trustStorePassword> <javax.net.ssl.keyStore>${project.build.directory}/jmeter/keystore/eskort_keystore.keystore</javax.net.ssl.keyStore> <javax.net.ssl.keyStorePassword>P@ssw0rd</javax.net.ssl.keyStorePassword> </propertiesSystem>
2. 禁用插件的属性转义功能
在插件配置中添加<escapeProperties>false</escapeProperties>,强制插件不对属性值做转义处理,避免反斜杠被错误转换为\:格式:
<configuration> <!-- 保留原有其他配置 --> <escapeProperties>false</escapeProperties> <propertiesSystem> <!-- 你的SSL属性配置 --> </propertiesSystem> </configuration>
3. 手动统一路径分隔符
如果必须使用绝对路径,直接用正斜杠替换Windows反斜杠(Java本身支持正斜杠作为路径分隔符):
<javax.net.ssl.keyStore>C:/MyTools/GitRepo/Compliance/performance/target/jmeter/keystore/eskort_keystore.keystore</javax.net.ssl.keyStore>
内容的提问来源于stack exchange,提问作者Luca Ruggeri
相关产品推荐
相关产品推荐

