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

如何解决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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:07:46