Java项目的命令行参数解析器
maven依赖配置
<dependency>
<groupId>com.github.pcj</groupId>
<artifactId>google-options</artifactId>
<version>1.0.0</version>
</dependency>
java代码
创建扩展和定义的解析器类。
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionsBase;
import java.util.List;
/**
* Command-line options definition for example server.
*/
public class ServerOptions extends OptionsBase {
@Option(
name = "help",
abbrev = 'h',
help = "Prints usage info.",
defaultValue = "true"
)
public boolean help;
@Option(
name = "host",
abbrev = 'o',
help = "The server host.",
category = "startup",
defaultValue = ""
)
public String host;
@Option(
name = "port",
abbrev = 'p',
help = "The server port.",
category = "startup",
defaultValue = "8080"
)
public int port;
@Option(
name = "dir",
abbrev = 'd',
help = "Name of directory to serve static files.",
category = "startup",
allowMultiple = true,
defaultValue = ""
)
public List<String> dirs;
}
解析器类的参数使用
import com.google.devtools.common.options.OptionsParser;
import java.util.Collections;
public class Server {
//java -jar server.jar --host=127.0.0.1 --port=21 --dir=E:\test --dir=E:\demo
public static void main(String[] args) {
OptionsParser parser = OptionsParser.newOptionsParser(ServerOptions.class);
parser.parseAndExitUponError(args);
ServerOptions options = parser.getOptions(ServerOptions.class);
if (options.host.isEmpty() || options.port < 0 || options.dirs.isEmpty()) {
printUsage(parser);
return;
}
System.out.format("Starting server at %s:%d...\n", options.host, options.port);
for (String dirname : options.dirs) {
System.out.format("\\--> Serving static files at <%s>\n", dirname);
}
}
private static void printUsage(OptionsParser parser) {
System.out.println("Usage: java -jar server.jar OPTIONS");
System.out.println(parser.describeOptions(Collections.<String, String>emptyMap(),
OptionsParser.HelpVerbosity.LONG));
}
}
无参默认打印内容
Usage: java -jar server.jar OPTIONS
Disconnected from the target VM, address: '127.0.0.1:51994', transport: 'socket'
Options category 'misc':
--[no]help [-h] (a boolean; default: "true")
Prints usage info.
Options category 'startup':
--dir [-d] (a string; may be used multiple times)
Name of directory to serve static files.
--host [-o] (a string; default: "")
The server host.
--port [-p] (an integer; default: "8080")
The server port.
输入参数打印内容
Starting server at 127.0.0.1:21...
\--> Serving static files at <E:\test>
\--> Serving static files at <E:\demo>