如何阻止我的命令行参数在 Maven 插件中被转义?
Posted
技术标签:
【中文标题】如何阻止我的命令行参数在 Maven 插件中被转义?【英文标题】:How do I stop my command-line arguments being escaped in a maven plugin? 【发布时间】:2010-11-18 06:54:46 【问题描述】:我有一个插件,它使用 Plexus 命令行来调用一些外部进程并捕获输出。其中一个参数是带有空格和引号的有趣格式,例如--范围:“2008 年 8 月 25 日”-“2009 年 8 月 4 日”。我无法更改参数的所需格式,但 Plexus 检测到参数中的空格并将整个内容用引号括起来。
所以
call --range:"25 Aug 2008"-"04 Aug 2009"
变成
call "--range:"25 Aug 2008"-"04 Aug 2009""
调用失败。
我可以让 plexus 停止转义参数吗?
【问题讨论】:
【参考方案1】:Commandline 对象使用 Shell 与本地环境交互,您可以配置 Shell 以覆盖默认转义过程以不转义任何引号:
Commandline cl = new Commandline("call");
commandline.getShell().setQuotedArgumentsEnabled(false);
请注意,这意味着没有个参数将被引用,因此请谨慎使用!
【讨论】:
以上是关于如何阻止我的命令行参数在 Maven 插件中被转义?的主要内容,如果未能解决你的问题,请参考以下文章