作为前面提到的评论之一( https://github.com/pcj/google-options )从一开始就是一个不错的选择。
我想要添加的一件事是:
1)如果遇到一些解析器反射错误,请尝试使用较新版本的番石榴。在我的情况下:
maven_jar( name = "com_google_guava_guava", artifact = "com.google.guava:guava:19.0", server = "maven2_server", ) maven_jar( name = "com_github_pcj_google_options", artifact = "com.github.pcj:google-options:jar:1.0.0", server = "maven2_server", ) maven_server( name = "maven2_server", url = "http://central.maven.org/maven2/", )
2)运行命令行时:
bazel run path/to/your:project -- --var1 something --var2 something -v something
3)当您需要使用帮助时,只需输入:
bazel run path/to/your:project -- --help
叶氏。
我想你正在寻找这样的东西: http://commons.apache.org/cli
Apache Commons CLI库提供用于处理命令行界面的API。
对于Spring用户,我们也应该提到 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/SimpleCommandLinePropertySource.html 和他的双胞胎兄弟 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/JOptCommandLinePropertySource.html (JOpt实现相同的功能)。 Spring的优点是你可以直接将命令行参数绑定到属性,这里有一个例子 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/CommandLinePropertySource.html
我写了另一个: http://argparse4j.sourceforge.net/
Argparse4j是Java的命令行参数解析器库,基于Python的argparse。
Argparse4j是我找到的最好的。它模仿Python的argparse库,非常方便和强大。
你可能会发现这篇不幸的元文章作为一个有趣的起点:
http://furiouspurpose.blogspot.com/2008/07/command-line-parsing-libraries-for-java.html
看看最近的 JCommander 。
我创造了它。我很高兴收到问题或功能要求。
我使用过JOpt,发现它非常方便: http://jopt-simple.sourceforge.net/
首页还提供了大约8个替代库的列表,检查出来并选择最适合您需求的库。
看看吧 Commons CLI 项目,那里有很多好东西。
我不建议使用Apache Common CLI库,因为它是非线程安全的。 它使用具有静态变量和方法的有状态类来执行内部工作(例如OptionBuilder),并且只应在单线程强控制情况下使用。
也许这些
JArgs命令行选项解析 适用于Java的套件 - 这个小项目提供了一个方便,紧凑,预打包和全面记录的命令行选项解析器套件,供Java程序员使用。最初,提供了与GNU风格的'getopt'兼容的解析。
ritopt,Java的终极选项解析器 - 虽然已经提出了几个命令行选项标准,但ritopt遵循opt包中规定的约定。
有人指我 args4j 最近这是基于注释的。我很喜欢!