命令行解析:Commons CLI替代方案?

时间:2010-07-22 13:18:44

标签: java command-line

对于Java中的命令行解析,我通常使用Apache Commons CLI。 任何人都可以推荐任何替代库吗?

8 个答案:

答案 0 :(得分:22)

JCommander听起来像是一个非常简单有趣的方法来解析带有注释的命令行参数(来自TestNG的创建者):

  

您使用选项说明注释字段:

import com.beust.jcommander.Parameter;

public class JCommanderTest {
  @Parameter
  public List<String> parameters = Lists.newArrayList();

  @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity")
  public Integer verbose = 1;

  @Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
  public String groups;

  @Parameter(names = "-debug", description = "Debug mode")
  public boolean debug = false;
}
  

然后你只是要求JCommander解析:

JCommanderTest jct = new JCommanderTest();
String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" };
new JCommander(jct, argv);

Assert.assertEquals(jct.verbose.intValue(), 2);

答案 1 :(得分:6)

这个答案有帮助吗? How to parse command line arguments in Java?

答案 2 :(得分:5)

我个人在https://github.com/kohsuke/args4j

使用kohsuke的args4J

答案 3 :(得分:2)

我在这里列出了一些command line interpreters

答案 4 :(得分:2)

java-source.net,您可以找到至少4个其他替代库到Apache Commons CLI。

答案 5 :(得分:0)

getopt-1.0.11是一个简单易用的轻量级库,我用过一次命令行参数解析

答案 6 :(得分:0)

我使用和喜欢

http://martiansoftware.com/jsap/

它的开源,简单。它不活跃,我认为作者还有其他铁杆。

答案 7 :(得分:0)

你可以试试commandline(我知道这个名字非常匿名)

它使用注释将命令行参数映射到对象模型中。几个解析 模式和一组可以以各种方式组合的注释允许您创建非常高级的命令行选项规则。

虽然它允许您将命令行参数直接映射到域模型, 您应该考虑为命令行参数使用单独的类。