在Java中解析命令行参数的好方法是什么?
在Java中解析命令行参数的好方法是什么?
@SpringBootApplication
public class Application implements ApplicationRunner {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(ApplicationArguments args) {
args.containsOption("my-flag-option"); // test if --my-flag-option was set
args.getOptionValues("my-option"); // returns values of --my-option=value1 --my-option=value2
args.getOptionNames(); // returns a list of all available options
// do something with your args
}
}
当容器成功启动后,将调用您的run
方法。
如果您需要在启动应用程序上下文之前访问参数,则可以手动解析应用程序参数:
@SpringBootApplication
public class Application implements ApplicationRunner {
public static void main(String[] args) {
ApplicationArguments arguments = new DefaultApplicationArguments(args);
// do whatever you like with your arguments
// see above ...
SpringApplication.run(Application.class, args);
}
}
最后,如果您需要在bean中访问您的参数,只需注入ApplicationArguments
:
@Component
public class MyBean {
@Autowired
private ApplicationArguments arguments;
// ...
}
JArgs Java命令行选项解析套件 - 这个小项目为Java程序员提供了一个方便、紧凑、预打包和全面文档化的命令行选项解析器套件。最初,提供了与GNU-style 'getopt'兼容的解析方式。
ritopt, Java的终极选项解析器 - 虽然已经提出了几种命令行选项标准,但ritopt遵循opt包中规定的约定。
Argparse4j 是我发现的最好的工具。它模仿了 Python 的 argparse 库,非常方便和强大。
如果你想要一个轻量级(jar大小约为20KB)且易于使用的东西,可以尝试使用argument-parser。它可以在大多数情况下使用,支持在参数中指定数组,并且不依赖于任何其他库。它适用于Java 1.5或以上版本。以下摘录显示了如何使用它的示例:
public static void main(String[] args) {
String usage = "--day|-d day --mon|-m month [--year|-y year][--dir|-ds directoriesToSearch]";
ArgumentParser argParser = new ArgumentParser(usage, InputData.class);
InputData inputData = (InputData) argParser.parse(args);
showData(inputData);
new StatsGenerator().generateStats(inputData);
}
More examples can be found here
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