Commons CLI 中没有选项名称的必需参数
Required argument without option name in Commons CLI
我正在尝试将 Java 中的命令行参数解析为以下用法:
Usage: gibl FILE
-h, --help Displays this help message.
-v, --version Displays the program version.
FILE Source file.
使用 Apache Commons CLI 库,我知道我可以使用 Option
来可选地解析 -h
和 -v
命令,然后使用 CommandLine.getArgs()
来获取剩余的参数 FILE
然后按我喜欢的方式解析它,但我实际上想在 CLI 中将其指定为 Option
。
目前,我在做以下事情:
if (cmd.getArgs().length < 1) {
System.out.println("Missing argument: FILE");
help(1); // Prints the help file and closes the program with an exit code of 1.
}
String file = cmd.getArgs()[0];
但是当我调用 HelpFormatter.printHelp(String, Options)
时,我的额外参数没有包含在自动生成的帮助文本中。
我追求的是这样的:
Option file = new Option("Source file.");
file.setRequired(true);
options.addOption(file);
我有一个参数,但没有相应的 选项 标识符附加到它,因此可以将它传递给 HelpFormatter
。有什么想法吗?
据我所知,Commons CLI 不支持定义没有关联标志的选项。我认为您需要按照以下方式做一些事情:
new HelpFormatter().printHelp("commandName [OPTIONS] <FILE>", Options);
如果你没看到,this question 非常相似,我的答案和那里的答案非常相似。
Apache Commons CLI 1.4:
您可以通过以下方式访问没有关联标志的命令行参数:
org.apache.commons.cli.CommandLine#getArgList()
它是 returns 所有 NOT consumed/parsed 参数的列表。
因此您可以通过以下方式获取定义的选项:
org.apache.commons.cli.CommandLine#getOptionValue("option-name")
org.apache.commons.cli.CommandLine#hasOption("option-name")
- (...)
或通过上述方式获取所有未解析/无法识别的选项的列表:
org.apache.commons.cli.CommandLine#getArgList()
我正在尝试将 Java 中的命令行参数解析为以下用法:
Usage: gibl FILE
-h, --help Displays this help message.
-v, --version Displays the program version.
FILE Source file.
使用 Apache Commons CLI 库,我知道我可以使用 Option
来可选地解析 -h
和 -v
命令,然后使用 CommandLine.getArgs()
来获取剩余的参数 FILE
然后按我喜欢的方式解析它,但我实际上想在 CLI 中将其指定为 Option
。
目前,我在做以下事情:
if (cmd.getArgs().length < 1) {
System.out.println("Missing argument: FILE");
help(1); // Prints the help file and closes the program with an exit code of 1.
}
String file = cmd.getArgs()[0];
但是当我调用 HelpFormatter.printHelp(String, Options)
时,我的额外参数没有包含在自动生成的帮助文本中。
我追求的是这样的:
Option file = new Option("Source file.");
file.setRequired(true);
options.addOption(file);
我有一个参数,但没有相应的 选项 标识符附加到它,因此可以将它传递给 HelpFormatter
。有什么想法吗?
据我所知,Commons CLI 不支持定义没有关联标志的选项。我认为您需要按照以下方式做一些事情:
new HelpFormatter().printHelp("commandName [OPTIONS] <FILE>", Options);
如果你没看到,this question 非常相似,我的答案和那里的答案非常相似。
Apache Commons CLI 1.4:
您可以通过以下方式访问没有关联标志的命令行参数:
org.apache.commons.cli.CommandLine#getArgList()
它是 returns 所有 NOT consumed/parsed 参数的列表。
因此您可以通过以下方式获取定义的选项:
org.apache.commons.cli.CommandLine#getOptionValue("option-name")
org.apache.commons.cli.CommandLine#hasOption("option-name")
- (...)
或通过上述方式获取所有未解析/无法识别的选项的列表:
org.apache.commons.cli.CommandLine#getArgList()