具有空格和引用支持的Apache CLI替代方案

时间:2016-09-14 16:37:37

标签: java apache parsing command-line-interface double-quotes

在我最大的一个项目中,我一直在使用org.apache.commons.cli.CommandLineParser很长一段时间。很久以前,我在多个exec类中有很多参数。

前段时间,我注意到对空白和引用的支持已经破缺。简单地说

--parameter="I need something like this"

或有时

--parameter="I would even appreciate espacing \"double quotes\""

根据Apache CLI option value with whitespace,这似乎是一个依赖于操作系统的错误(在我的Windows机器上,解析引用的参数有效,但在Debian服务器上却没有)。

所以我的问题是:是否有任何与Apache Commons CLI相似的替代方案(所以我不需要完全重写),但支持引用?

1 个答案:

答案 0 :(得分:0)

Picocli是Commons CLI的替代方法,该方法越来越流行。它同时具有programmatic APIannotations API

Picocli对解析quoted command line arguments具有出色的支持。 默认情况下,在picocli中保留命令行参数的引号,但是可以使用CommandLine::setTrimQuotes进行配置。当使用splitting参数时,不分割带引号的字符串(可以使用CommandLine::setSplitQuotedStrings进行配置)。

示例:

@Command(name = "example")
class Example {
    @Option(names = "-x", split = ",")
    String[] parts;
}

如果我们给此命令一些带引号的输入:

example -x "-Dvalues=a,b,c","-Dother=1,2"

这将导致parts数组具有以下值:

"-Dvalues=a,b,c"
"-Dother=1,2"

其他可能感兴趣的picocli功能: