Jan*_*Jan 27 java command-line
对于Java中的命令行解析,我通常使用Apache Commons CLI.任何人都可以推荐任何替代库吗?
mat*_*t b 22
Commons CLI最受欢迎的替代品是JCommander和picocli.
Picocli比JCommander更新,并且增加了对ANSI样式和颜色的命令行自动完成和使用帮助的支持.Picocli的解析器增加了一些功能,如支持强类型位置参数,聚类POSIX短选项和更直观的arity模型.Picocli提供程序化API和注释API.用法示例:
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;
}
Run Code Online (Sandbox Code Playgroud)
JCommander就像一个非常简单有趣的方法来解析带有注释的命令行参数(来自TestNG的创建者):
您可以使用选项说明注释字段:
JCommanderTest jct = new JCommanderTest();
String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" };
new JCommander(jct, argv);
Assert.assertEquals(jct.verbose.intValue(), 2);
Run Code Online (Sandbox Code Playgroud)
然后你只需要让JCommander解析:
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;
}
Run Code Online (Sandbox Code Playgroud)