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

如何在PowerShell中转义Maven参数字符串里的竖线

解决PowerShell中Maven命令竖线被解析为管道符的问题

最佳方案:使用停止解析标记--%

在PowerShell 5.1中,--%是专门的停止解析标记,它会让PowerShell停止处理后续内容中的特殊字符(包括管道符|),直接将内容原样传递给外部程序。执行以下命令即可正常运行:

mvn --% -Dhttp.nonProxyHosts=xxx.xxx.*|*.example.com|*.example2.com|localhost|127.0.0.1 -DskipTests clean install

如果习惯保留单引号包裹规则,也可以这样写(--%后的单引号会被原样传递,Maven能正确解析):

mvn --% -Dhttp.nonProxyHosts='xxx.xxx.*|*.example.com|*.example2.com|localhost|127.0.0.1' -DskipTests clean install

为什么之前的方法无效?

  1. 转义字符不适用:PowerShell的反引号、反斜杠`等转义符,仅对PowerShell自身的语法解析生效,无法直接控制外部程序(Maven)的参数接收逻辑,因此无法阻止|被误解析。
  2. 双引号包裹的问题:你之前尝试的双引号包裹方式,要么因为内部单引号被Maven当成参数的一部分导致规则解析错误,要么PowerShell 5.1对双引号内特殊字符的预处理逻辑仍会触发管道符解析。

替代方案:嵌套双引号传递参数

如果不想使用--%,可以去掉参数内部的单引号,直接用双引号包裹整个-Dhttp.nonProxyHosts参数,让PowerShell将其作为整体传递:

mvn "-Dhttp.nonProxyHosts=xxx.xxx.*|*.example.com|*.example2.com|localhost|127.0.0.1" -DskipTests clean install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:06:22