Java 支持空白和引用的Apache CLI替代方案

Java 支持空白和引用的Apache CLI替代方案,java,apache,parsing,command-line-interface,double-quotes,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\"" 根据,这看起来像是一个依赖于操作系统的bug(在我的W

在我最大的一个项目中,我已经使用
org.apache.commons.cli.CommandLineParser
很长时间了。目前,我在多个exec类中有几十个参数

不久前,我注意到对空格和引号的支持已经中断。简单地说

--parameter="I need something like this"
或者有时候

--parameter="I would even appreciate espacing \"double quotes\""
根据,这看起来像是一个依赖于操作系统的bug(在我的Windows机器上,解析引用的参数是有效的,但在Debian服务器上却不行)

因此,我的问题是:是否有任何替代方案合理地类似于Apache Commons CLI(因此我不必完全重写),但支持引用?

是Commons CLI的一种替代方案,正日益流行。它既有a也有a

Picocli非常支持解析。 默认情况下,picocli中保留命令行参数周围的引号,但可以使用
CommandLine::setTrimQuotes
进行配置。参数时,不拆分带引号的字符串(可以使用
命令行::setSplitQuotedString
配置)

例如:

@Command(name = "example")
class Example {
    @Option(names = "-x", split = ",")
    String[] parts;
}
如果我们给这个命令一些带引号的输入:

example -x "-Dvalues=a,b,c","-Dother=1,2"
这将导致
零件
数组具有以下值:

"-Dvalues=a,b,c"
"-Dother=1,2"
可能感兴趣的其他picocli功能:

  • 命令行
  • 使用帮助
  • @
    -文件(或“”)支持
  • 用于命名选项和位置参数
  • -Dkey=value
  • (未向控制台发出回声)
  • 优质
  • 积极维护
免责声明:我维护picocli


这看起来像广告。你应该在某处声明你是那个图书馆的作者。