【问题标题】:How do I stop my command-line arguments being escaped in a maven plugin?如何阻止我的命令行参数在 Maven 插件中被转义?
【发布时间】: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 停止转义参数吗?

【问题讨论】:

    标签: java maven-2 plexus


    【解决方案1】:

    Commandline 对象使用 Shell 与本地环境交互,您可以配置 Shell 以覆盖默认转义过程以不转义任何引号:

    Commandline cl = new Commandline("call");
    commandline.getShell().setQuotedArgumentsEnabled(false);
    

    请注意,这意味着没有个参数将被引用,因此请谨慎使用!

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多