使用Apache common-cli来解析参数

时间:2012-05-29 11:03:33

标签: java command-line-interface apache-commons apache-commons-cli

Apache common-cli在其ls命令的网站上有一个例子:

options.addOption( "a", "all", false, "do not hide entries starting with ." );
options.addOption( "A", "almost-all", false, "do not list implied . and .." );
options.addOption( "b", "escape", false, "print octal escapes for nongraphic " + "characters" );
options.addOption( OptionBuilder.withLongOpt( "block-size" )
                                .withDescription( "use SIZE-byte blocks" )
                                .hasArg()
                                .withArgName("SIZE")
                                .create() );

这显示了这样的帮助:

-a, --all                  do not hide entries starting with .
-A, --almost-all           do not list implied . and ..
-b, --escape               print octal escapes for nongraphic characters
    --block-size=SIZE      use SIZE-byte blocks
  1. 当我编写此代码时,它会显示--block-size <SIZE>。我想展示这样的东西:-z,--block-size=SIZE(不仅仅是 长期选择)。
  2. PosixParserGnuParser的区别是什么?我变了 他们在代码中,我没有发现任何差异。
  3. 如果我提供错误的选项,例如h,则throw不会ParseException。该程序正常启动并完成。

1 个答案:

答案 0 :(得分:5)

  1. 示例中的块大小选项只有很长的格式,这就是为什么没有显示短选项的原因。如果你添加一个简短的别名,你将得到你期望的结果

  2. 最新版本的Commons CLI中不推荐使用
  3. PosixParserGnuParser。新的统一解析器可用作DefaultParser。 posix解析器能够解析连接的短选项,例如tar -zxvf foo.tar.gz

  4. 根据stopAtNonOption解析器参数的值,额外选项可作为应用程序的参数处理或触发异常。