需求描述:通过命令行给 Java 程序传递参数,在程序中提取出参数的值。使用 Apache Commons CLI 来解决这个问题。
1 引入依赖
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
2 代码示例
import org.apache.commons.cli.*;
public class Demo {
public static void main(String[] args) throws ParseException {
final String[] mockArgs = new String[] { "--foo=bar" };
parseTest(mockArgs);
}
private static void parseTest(String[] args) throws ParseException {
final Options options = new Options();
options.addOption(new Option("f", "foo", true, "foo arg demo"));
CommandLineParser parser = new DefaultParser();
final CommandLine cl = parser.parse(options, args);
assert "bar".equals(cl.getOptionValue("foo"));
}
}
这段代码展示了如何解析形如 --foo=bar 的参数。还支持其他参数形式,具体可查阅官方文档,并参考源码中的单元测试。