ArgsOptionParser
public class ArgsOptionParser
extends OptionSetter
根据已解析的命令行参数填充“ Option
字段。
传入的String []中的字符串从左到右进行解析。每个字符串都分为短选项(例如“ -v”),长选项(例如“ --verbose”),选项的参数(例如“ -f out.txt”中的“ out.txt”)。 ”)或非选项位置参数。
每个选项参数必须映射到一个或多个
Option
字段。长选项映射到
Option
名称,而短选项映射到
Option
简称。每个选项名称和选项短名称对于同一对象内的所有其他
Option
字段必须唯一。
一个选项参数可以映射到多个对象中具有相同名称的多个
Option
字段。可以对
Option
参数进行命名空间命名,以使用该对象的完整类名或由':'分隔的
OptionClass
别名值来唯一引用单个对象中的
Option
字段。即
--classname:optionname optionvalue or
--optionclassalias:optionname optionvalue.
一个简单的短选项是一个“-”,后跟一个短选项字符。如果该选项需要一个参数(对于任何非布尔选项都适用),则可以将其写为一个单独的参数,但不必如此。也就是说,“-f out.txt”和“ -fout.txt”都是可以接受的。
只要所有(可能的最后一个除外)都不需要参数,就可以在单个“-”之后指定多个短选项。
长选项以“-”开头,后跟几个字符。如果选项需要一个参数,则可以将其直接写在选项名称之后,用“ =”分隔,或作为下一个参数。 (即“ --file = out.txt”或“ --file out.txt”。)
布尔长选项“ --name”会自动获得“ --no-name”伴侣。给定选项“ --flag”,则“ --flag”,“-no-flag”,“-flag = true”和“ --flag = false”均有效,尽管“ --flag”均无效允许使用“ true”或“ --flag false”(因为“ --flag”本身就足够了,因此以下“ true”或“ false”将被分别解释)。您可以将“是”和“否”用作“ true”和“ false”的同义词。
每个不以“-”开头且不是前一个选项的必需参数的String都是非选项位置参数,所有后续的String都是这样。 “-”之后的每个String都是非选项位置参数。
与选项相对应的字段在处理选项时会更新。所有剩余的位置参数都作为List <String>返回。
这是一个简单的例子:
// Non-@Option fields will be ignored.
class Options {
@Option(name = "quiet", shortName = 'q')
boolean quiet = false;
// Here the user can use --no-color.
@Option(name = "color")
boolean color = true;
@Option(name = "mode", shortName = 'm')
String mode = "standard; // Supply a default just by setting the field.
@Option(name = "port", shortName = 'p')
int portNumber = 8888;
// There's no need to offer a short name for rarely-used options.
@Option(name = "timeout" )
double timeout = 1.0;
@Option(name = "output-file", shortName = 'o' })
File output;
// Multiple options are added to the collection.
// The collection field itself must be non-null.
@Option(name = "input-file", shortName = 'i')
List<File> inputs = new ArrayList<File>();
}
Options options = new Options();
List<String> posArgs = new OptionParser(options).parse("--input-file", "/tmp/file1.txt");
for (File inputFile : options.inputs) {
if (!options.quiet) {
...
}
...
}
另请参阅:
- getopt(1)手册页
- Python的“ optparse”模块(http://docs.python.org/library/optparse.html)
- POSIX“实用程序语法指南”(http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- GNU“命令行界面标准”(http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
概要
公共建设者
ArgsOptionParser
public ArgsOptionParser ( optionSources)
为对象集合创建ArgsOptionParser
。
投掷 |
---|
ConfigurationException | 如果配置对象配置不正确。 |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
为一个或多个对象创建一个ArgsOptionParser
。
参量 |
---|
optionSources | Object :配置对象。 |
投掷 |
---|
ConfigurationException | 如果配置对象配置不正确。 |
公开方法
getOptionHelp
public static String getOptionHelp (boolean importantOnly,
Object optionObject)
输出中所有“ Option
字段的帮助文本optionObject 。
每个选项的帮助文本将采用以下格式:
[-option_shortname, --option_name] [option_description] Default:
[current option field's value in optionObject]
如果选项字段为null或为空,则将省略“ Default ...”文本。
参量 |
---|
importantOnly | boolean :如果为true 仅打印重要选项的帮助 |
optionObject | Object :要为其打印帮助文本的对象 |
退货 |
---|
String | 一个字符串,其中包含所有“选项”字段的用户友好帮助文本 |
解析
public parse (String... args)
解析命令行参数'args',设置提供给构造函数的'optionSource'的@Option字段。
投掷 |
---|
ConfigurationException | 如果解析参数时发生错误。 |
parseBestEffort
public parseBestEffort ( args,
boolean forceContinue)
备用parseBestEffort(String)
方法,该方法采用ERROR(/List)
参数,并且即使有些args不解析,也可能被强制继续解析直到结束。
参量 |
---|
args | :将包含剩余的args的列表。 |
forceContinue | boolean :即使某些参数不解析也应该继续解析,则为true。 |
parseBestEffort
public parseBestEffort (String... args)
尽力而为的parse(String)
版本。如果引发ConfigurationException,则在内部捕获该异常,并返回其余参数(包括导致引发异常的参数)。此方法不会抛出。
validateMandatoryOptions
public void validateMandatoryOptions ()
验证是否已设置所有标记为必填的字段。