HADOOP-18359. Update commons-cli from 1.2 to 1.5. (#5095). Contributed by Shilun Fan.

Signed-off-by: Ayush Saxena <ayushsaxena@apache.org>
This commit is contained in:
slfan1989 2023-05-10 04:12:12 +08:00 committed by GitHub
parent 03bf8f982a
commit a2dda0ce03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 383 additions and 432 deletions

View File

@ -245,7 +245,7 @@ com.squareup.okhttp3:okhttp:4.10.0
com.squareup.okio:okio:3.2.0
com.zaxxer:HikariCP:4.0.3
commons-beanutils:commons-beanutils:1.9.4
commons-cli:commons-cli:1.2
commons-cli:commons-cli:1.5.0
commons-codec:commons-codec:1.11
commons-collections:commons-collections:3.2.2
commons-daemon:commons-daemon:1.0.13

View File

@ -33,7 +33,6 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.audit.CommonAuditContext;
@ -362,29 +361,28 @@ protected String getUsageMessage() {
/**
* Override point: create an options instance to combine with the
* standard options set.
* <i>Important. Synchronize uses of {@link OptionBuilder}</i>
* with {@code OptionBuilder.class}
* <i>Important. Synchronize uses of {@link Option}</i>
* with {@code Option.class}
* @return the new options
*/
@SuppressWarnings("static-access")
protected Options createOptions() {
synchronized (OptionBuilder.class) {
synchronized (Option.class) {
Options options = new Options();
Option oconf = OptionBuilder.withArgName("configuration file")
Option oconf = Option.builder(ARG_CONF_SHORT).argName("configuration file")
.hasArg()
.withDescription("specify an application configuration file")
.withLongOpt(ARG_CONF)
.create(ARG_CONF_SHORT);
Option confclass = OptionBuilder.withArgName("configuration classname")
.desc("specify an application configuration file")
.longOpt(ARG_CONF)
.build();
Option confclass = Option.builder(ARG_CONFCLASS_SHORT).argName("configuration classname")
.hasArg()
.withDescription(
"Classname of a Hadoop Configuration subclass to load")
.withLongOpt(ARG_CONFCLASS)
.create(ARG_CONFCLASS_SHORT);
Option property = OptionBuilder.withArgName("property=value")
.desc("Classname of a Hadoop Configuration subclass to load")
.longOpt(ARG_CONFCLASS)
.build();
Option property = Option.builder("D").argName("property=value")
.hasArg()
.withDescription("use value for given property")
.create('D');
.desc("use value for given property")
.build();
options.addOption(oconf);
options.addOption(property);
options.addOption(confclass);

View File

@ -46,7 +46,6 @@
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.MissingArgumentException;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.classification.InterfaceAudience;
@ -230,8 +229,8 @@ public static void main(String[] args) throws IOException {
GenericOptionsParser genericParser = new GenericOptionsParser(args);
String[] remainingArgs = genericParser.getRemainingArgs();
Option conf = OptionBuilder.hasArg().create("conffile");
Option help = OptionBuilder.withLongOpt("help").create('h');
Option conf = Option.builder("conffile").hasArg().build();
Option help = Option.builder("h").longOpt("help").hasArg().build();
Options opts = new Options().addOption(conf).addOption(help);
CommandLineParser specificParser = new GnuParser();
CommandLine cmd = null;

View File

@ -32,7 +32,6 @@
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.classification.InterfaceAudience;
@ -225,51 +224,50 @@ public boolean isParseSuccessful() {
/**
* @return Specify properties of each generic option.
* <i>Important</i>: as {@link OptionBuilder} is not thread safe, subclasses
* must synchronize use on {@code OptionBuilder.class}
* <i>Important</i>: as {@link Option} is not thread safe, subclasses
* must synchronize use on {@code Option.class}
* @param opts input opts.
*/
@SuppressWarnings("static-access")
protected Options buildGeneralOptions(Options opts) {
synchronized (OptionBuilder.class) {
Option fs = OptionBuilder.withArgName("file:///|hdfs://namenode:port")
synchronized (Option.class) {
Option fs = Option.builder("fs").argName("file:///|hdfs://namenode:port")
.hasArg()
.withDescription("specify default filesystem URL to use, "
.desc("specify default filesystem URL to use, "
+ "overrides 'fs.defaultFS' property from configurations.")
.create("fs");
Option jt = OptionBuilder.withArgName("local|resourcemanager:port")
.build();
Option jt = Option.builder("jt").argName("local|resourcemanager:port")
.hasArg()
.withDescription("specify a ResourceManager")
.create("jt");
Option oconf = OptionBuilder.withArgName("configuration file")
.desc("specify a ResourceManager")
.build();
Option oconf = Option.builder("conf").argName("configuration file")
.hasArg()
.withDescription("specify an application configuration file")
.create("conf");
Option property = OptionBuilder.withArgName("property=value")
.desc("specify an application configuration file")
.build();
Option property = Option.builder("D").argName("property=value")
.hasArg()
.withDescription("use value for given property")
.create('D');
Option libjars = OptionBuilder.withArgName("paths")
.desc("use value for given property")
.build();
Option libjars = Option.builder("libjars").argName("paths")
.hasArg()
.withDescription(
"comma separated jar files to include in the classpath.")
.create("libjars");
Option files = OptionBuilder.withArgName("paths")
.desc("comma separated jar files to include in the classpath.")
.build();
Option files = Option.builder("files").argName("paths")
.hasArg()
.withDescription("comma separated files to be copied to the " +
.desc("comma separated files to be copied to the " +
"map reduce cluster")
.create("files");
Option archives = OptionBuilder.withArgName("paths")
.build();
Option archives = Option.builder("archives").argName("paths")
.hasArg()
.withDescription("comma separated archives to be unarchived" +
.desc("comma separated archives to be unarchived" +
" on the compute machines.")
.create("archives");
.build();
// file with security tokens
Option tokensFile = OptionBuilder.withArgName("tokensFile")
Option tokensFile = Option.builder("tokenCacheFile").argName("tokensFile")
.hasArg()
.withDescription("name of the file with the tokens")
.create("tokenCacheFile");
.desc("name of the file with the tokens")
.build();
opts.addOption(fs);

View File

@ -29,10 +29,9 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.conf.Configuration;
@ -272,7 +271,7 @@ public MyOptions(String[] args) {
try {
Options opts = buildOptions();
CommandLineParser parser = new GnuParser();
CommandLineParser parser = new DefaultParser();
CommandLine line = parser.parse(opts, args, true);
processOptions(line, opts);
validateOptions();
@ -290,81 +289,56 @@ public boolean proceed() {
private Options buildOptions() {
Option compress =
OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz]")
.hasArg().withDescription("compression scheme").create('c');
Option.builder("c").longOpt("compress").argName("[none|lzo|gz]")
.hasArg().desc("compression scheme").build();
Option fileSize =
OptionBuilder.withLongOpt("file-size").withArgName("size-in-MB")
.hasArg().withDescription("target size of the file (in MB).")
.create('s');
Option.builder("s").longOpt("file-size").argName("size-in-MB")
.hasArg().desc("target size of the file (in MB).").build();
Option fsInputBufferSz =
OptionBuilder.withLongOpt("fs-input-buffer").withArgName("size")
.hasArg().withDescription(
"size of the file system input buffer (in bytes).").create(
'i');
Option.builder("i").longOpt("fs-input-buffer").argName("size")
.hasArg().desc("size of the file system input buffer (in bytes).").build();
Option fsOutputBufferSize =
OptionBuilder.withLongOpt("fs-output-buffer").withArgName("size")
.hasArg().withDescription(
"size of the file system output buffer (in bytes).").create(
'o');
Option.builder("o").longOpt("fs-output-buffer").argName("size")
.hasArg().desc("size of the file system output buffer (in bytes).").build();
Option keyLen =
OptionBuilder
.withLongOpt("key-length")
.withArgName("min,max")
.hasArg()
.withDescription(
"the length range of the key (in bytes)")
.create('k');
Option.builder("k").longOpt("key-length").argName("min,max")
.hasArg().desc("the length range of the key (in bytes)").build();
Option valueLen =
OptionBuilder
.withLongOpt("value-length")
.withArgName("min,max")
.hasArg()
.withDescription(
"the length range of the value (in bytes)")
.create('v');
Option.builder("v").longOpt("value-length").argName("min,max")
.hasArg().desc("the length range of the value (in bytes)").build();
Option blockSz =
OptionBuilder.withLongOpt("block").withArgName("size-in-KB").hasArg()
.withDescription("minimum block size (in KB)").create('b');
Option.builder("b").longOpt("block").argName("size-in-KB").hasArg()
.desc("minimum block size (in KB)").build();
Option seed =
OptionBuilder.withLongOpt("seed").withArgName("long-int").hasArg()
.withDescription("specify the seed").create('S');
Option.builder("S").longOpt("seed").argName("long-int").hasArg()
.desc("specify the seed").build();
Option operation =
OptionBuilder.withLongOpt("operation").withArgName("r|w|rw").hasArg()
.withDescription(
"action: seek-only, create-only, seek-after-create").create(
'x');
Option.builder("x").longOpt("operation").argName("r|w|rw").hasArg()
.desc("action: seek-only, create-only, seek-after-create").build();
Option rootDir =
OptionBuilder.withLongOpt("root-dir").withArgName("path").hasArg()
.withDescription(
"specify root directory where files will be created.")
.create('r');
Option.builder("r").longOpt("root-dir").argName("path").hasArg()
.desc("specify root directory where files will be created.").build();
Option file =
OptionBuilder.withLongOpt("file").withArgName("name").hasArg()
.withDescription("specify the file name to be created or read.")
.create('f');
Option.builder("f").longOpt("file").argName("name").hasArg()
.desc("specify the file name to be created or read.").build();
Option seekCount =
OptionBuilder
.withLongOpt("seek")
.withArgName("count")
.hasArg()
.withDescription(
"specify how many seek operations we perform (requires -x r or -x rw.")
.create('n');
Option.builder("n").longOpt("seek").argName("count").hasArg()
.desc("specify how many seek operations we perform (requires -x r or -x rw.").build();
Option help =
OptionBuilder.withLongOpt("help").hasArg(false).withDescription(
"show this screen").create("h");
Option.builder("h").longOpt("help").hasArg(false)
.desc("show this screen").build();
return new Options().addOption(compress).addOption(fileSize).addOption(
fsInputBufferSz).addOption(fsOutputBufferSize).addOption(keyLen)

View File

@ -30,10 +30,9 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.conf.Configuration;
@ -553,7 +552,7 @@ public MyOptions(String[] args) {
try {
Options opts = buildOptions();
CommandLineParser parser = new GnuParser();
CommandLineParser parser = new DefaultParser();
CommandLine line = parser.parse(opts, args, true);
processOptions(line, opts);
validateOptions();
@ -571,87 +570,70 @@ public boolean proceed() {
private Options buildOptions() {
Option compress =
OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz]")
.hasArg().withDescription("compression scheme").create('c');
Option.builder("c").longOpt("compress").argName("[none|lzo|gz]")
.hasArg().desc("compression scheme").build();
Option ditSize =
OptionBuilder.withLongOpt("dict").withArgName("size").hasArg()
.withDescription("number of dictionary entries").create('d');
Option.builder("d").longOpt("dict").argName("size")
.hasArg().desc("number of dictionary entries").build();
Option fileSize =
OptionBuilder.withLongOpt("file-size").withArgName("size-in-MB")
.hasArg().withDescription("target size of the file (in MB).")
.create('s');
Option.builder("s").longOpt("file-size").argName("size-in-MB")
.hasArg().desc("target size of the file (in MB).").build();
Option format =
OptionBuilder.withLongOpt("format").withArgName("[tfile|seqfile]")
.hasArg().withDescription("choose TFile or SeqFile").create('f');
Option.builder("f").longOpt("format").argName("[tfile|seqfile]")
.hasArg().desc("choose TFile or SeqFile").build();
Option fsInputBufferSz =
OptionBuilder.withLongOpt("fs-input-buffer").withArgName("size")
.hasArg().withDescription(
"size of the file system input buffer (in bytes).").create(
'i');
Option.builder("i").longOpt("fs-input-buffer").argName("size")
.hasArg().desc("size of the file system input buffer (in bytes).").build();
Option fsOutputBufferSize =
OptionBuilder.withLongOpt("fs-output-buffer").withArgName("size")
.hasArg().withDescription(
"size of the file system output buffer (in bytes).").create(
'o');
Option.builder("o").longOpt("fs-output-buffer").argName("size")
.hasArg().desc("size of the file system output buffer (in bytes).").build();
Option keyLen =
OptionBuilder
.withLongOpt("key-length")
.withArgName("length")
.hasArg()
.withDescription(
"base length of the key (in bytes), actual length varies in [base, 2*base)")
.create('k');
Option.builder("o").longOpt("key-length").argName("length")
.hasArg()
.desc("base length of the key (in bytes), actual length varies in [base, 2*base)")
.build();
Option valueLen =
OptionBuilder
.withLongOpt("value-length")
.withArgName("length")
.hasArg()
.withDescription(
"base length of the value (in bytes), actual length varies in [base, 2*base)")
.create('v');
Option.builder("v").longOpt("key-length").argName("length")
.longOpt("value-length").argName("length").hasArg()
.desc("base length of the value (in bytes), actual length varies in [base, 2*base)")
.build();
Option wordLen =
OptionBuilder.withLongOpt("word-length").withArgName("min,max")
.hasArg().withDescription(
"range of dictionary word length (in bytes)").create('w');
Option.builder("w").longOpt("word-length").argName("min,max")
.hasArg().desc("range of dictionary word length (in bytes)").build();
Option blockSz =
OptionBuilder.withLongOpt("block").withArgName("size-in-KB").hasArg()
.withDescription("minimum block size (in KB)").create('b');
Option.builder("b").longOpt("block").argName("size-in-KB").hasArg()
.desc("minimum block size (in KB)").build();
Option seed =
OptionBuilder.withLongOpt("seed").withArgName("long-int").hasArg()
.withDescription("specify the seed").create('S');
Option.builder("S").longOpt("seed").argName("long-int").hasArg()
.desc("specify the seed").build();
Option operation =
OptionBuilder.withLongOpt("operation").withArgName("r|w|rw").hasArg()
.withDescription(
"action: read-only, create-only, read-after-create").create(
'x');
Option.builder("x").longOpt("operation").argName("r|w|rw").hasArg()
.desc("action: read-only, create-only, read-after-create").build();
Option rootDir =
OptionBuilder.withLongOpt("root-dir").withArgName("path").hasArg()
.withDescription(
"specify root directory where files will be created.")
.create('r');
Option.builder("r").longOpt("root-dir").argName("path").hasArg()
.desc("specify root directory where files will be created.").build();
Option help =
OptionBuilder.withLongOpt("help").hasArg(false).withDescription(
"show this screen").create("h");
Option.builder("h").longOpt("help").hasArg(false)
.desc("show this screen").build();
return new Options().addOption(compress).addOption(ditSize).addOption(
fileSize).addOption(format).addOption(fsInputBufferSz).addOption(
fsOutputBufferSize).addOption(keyLen).addOption(wordLen).addOption(
blockSz).addOption(rootDir).addOption(valueLen).addOption(operation)
.addOption(help);
}
private void processOptions(CommandLine line, Options opts)

View File

@ -23,7 +23,7 @@
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.conf.Configuration;
@ -88,59 +88,78 @@ private void validateOptions() throws ParseException {
}
}
@SuppressWarnings("static-access")
private Options buildOptions() {
Options opts = new Options();
opts.addOption(
OptionBuilder.withLongOpt("serverThreads").hasArg(true)
.withArgName("numthreads")
.withDescription("number of server threads (handlers) to run (or 0 to not run server)")
.create("s"));
opts.addOption(
OptionBuilder.withLongOpt("serverReaderThreads").hasArg(true)
.withArgName("threads")
.withDescription("number of server reader threads to run")
.create("r"));
opts.addOption(
OptionBuilder.withLongOpt("clientThreads").hasArg(true)
.withArgName("numthreads")
.withDescription("number of client threads to run (or 0 to not run client)")
.create("c"));
Option.builder("s")
.longOpt("serverThreads")
.hasArg(true)
.argName("numthreads")
.desc("number of server threads (handlers) to run (or 0 to not run server)")
.build());
opts.addOption(
OptionBuilder.withLongOpt("messageSize").hasArg(true)
.withArgName("bytes")
.withDescription("size of call parameter in bytes")
.create("m"));
Option.builder("r")
.longOpt("serverReaderThreads")
.hasArg(true)
.argName("threads")
.desc("number of server reader threads to run")
.build());
opts.addOption(
OptionBuilder.withLongOpt("time").hasArg(true)
.withArgName("seconds")
.withDescription("number of seconds to run clients for")
.create("t"));
Option.builder("c")
.longOpt("clientThreads")
.hasArg(true)
.argName("numthreads")
.desc("number of client threads to run (or 0 to not run client)")
.build());
opts.addOption(
OptionBuilder.withLongOpt("port").hasArg(true)
.withArgName("port")
.withDescription("port to listen or connect on")
.create("p"));
Option.builder("m")
.longOpt("messageSize")
.hasArg(true)
.argName("bytes")
.desc("size of call parameter in bytes")
.build());
opts.addOption(
OptionBuilder.withLongOpt("host").hasArg(true)
.withArgName("addr")
.withDescription("host to listen or connect on")
.create('h'));
Option.builder("t")
.longOpt("time")
.hasArg(true)
.argName("seconds")
.desc("number of seconds to run clients for")
.build());
opts.addOption(
Option.builder("p")
.longOpt("port")
.hasArg(true)
.argName("port")
.desc("port to listen or connect on")
.build());
opts.addOption(
Option.builder("h")
.longOpt("host")
.hasArg(true)
.argName("addr")
.desc("host to listen or connect on")
.build());
opts.addOption(
OptionBuilder.withLongOpt("engine").hasArg(true)
.withArgName("protobuf")
.withDescription("engine to use")
.create('e'));
Option.builder("e")
.longOpt("engine")
.hasArg(true)
.argName("protobuf")
.desc("engine to use")
.build());
opts.addOption(
OptionBuilder.withLongOpt("help").hasArg(false)
.withDescription("show this screen")
.create('?'));
Option.builder("?")
.longOpt("help")
.hasArg(false)
.desc("show this screen")
.build());
return opts;
}

View File

@ -34,7 +34,6 @@
import java.util.Map;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.math3.util.Pair;
import org.apache.hadoop.conf.Configuration;
@ -198,10 +197,11 @@ public void testEmptyFilenames() throws Exception {
@Test
public void testCreateWithOptions() throws Exception {
// Create new option newOpt
Option opt = OptionBuilder.withArgName("int")
.hasArg()
.withDescription("A new option")
.create("newOpt");
Option opt = Option.builder("newOpt").argName("int")
.hasArg()
.desc("A new option")
.build();
Options opts = new Options();
opts.addOption(opt);

View File

@ -32,7 +32,6 @@
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.conf.Configuration;
@ -246,29 +245,29 @@ public int resolve(String[] args) {
}
public int bind(String[] args) {
Option rest = OptionBuilder.withArgName("rest")
Option rest = Option.builder("rest").argName("rest")
.hasArg()
.withDescription("rest Option")
.create("rest");
Option webui = OptionBuilder.withArgName("webui")
.desc("rest Option")
.build();
Option webui = Option.builder("webui").argName("webui")
.hasArg()
.withDescription("webui Option")
.create("webui");
Option inet = OptionBuilder.withArgName("inet")
.withDescription("inet Option")
.create("inet");
Option port = OptionBuilder.withArgName("port")
.desc("webui Option")
.build();
Option inet = Option.builder("inet").argName("inet")
.desc("inet Option")
.build();
Option port = Option.builder("p").argName("port")
.hasArg()
.withDescription("port to listen on [9999]")
.create("p");
Option host = OptionBuilder.withArgName("host")
.desc("port to listen on [9999]")
.build();
Option host = Option.builder("h").argName("host")
.hasArg()
.withDescription("host name")
.create("h");
Option apiOpt = OptionBuilder.withArgName("api")
.desc("host name")
.build();
Option apiOpt = Option.builder("api").argName("api")
.hasArg()
.withDescription("api")
.create("api");
.desc("api")
.build();
Options inetOption = new Options();
inetOption.addOption(inet);
inetOption.addOption(port);
@ -412,9 +411,9 @@ public int mknode(String[] args) {
@SuppressWarnings("unchecked")
public int rm(String[] args) {
Option recursive = OptionBuilder.withArgName("recursive")
.withDescription("delete recursively")
.create("r");
Option recursive = Option.builder("r").argName("recursive")
.desc("delete recursively")
.build();
Options rmOption = new Options();
rmOption.addOption(recursive);

View File

@ -724,12 +724,12 @@ public static class Cli extends Configured implements Tool {
private static Options buildCliOptions() {
Options opts = new Options();
Option file = OptionBuilder.withArgName("pathsFile").hasArg()
.withDescription("a local file containing files/dirs to migrate")
.create("f");
Option paths = OptionBuilder.withArgName("paths").hasArgs()
.withDescription("specify space separated files/dirs to migrate")
.create("p");
Option file = Option.builder("f").argName("pathsFile").hasArg()
.desc("a local file containing files/dirs to migrate")
.build();
Option paths = Option.builder("p").argName("paths").hasArgs()
.desc("specify space separated files/dirs to migrate")
.build();
OptionGroup group = new OptionGroup();
group.addOption(file);
group.addOption(paths);

View File

@ -19,7 +19,6 @@
import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
@ -279,34 +278,34 @@ public static Options getReportOptions() {
*/
private void addPlanCommands(Options opt) {
Option plan = OptionBuilder.withLongOpt(PLAN)
.withDescription("Hostname, IP address or UUID of datanode " +
Option plan = Option.builder().longOpt(PLAN)
.desc("Hostname, IP address or UUID of datanode " +
"for which a plan is created.")
.hasArg()
.create();
.build();
getPlanOptions().addOption(plan);
opt.addOption(plan);
Option outFile = OptionBuilder.withLongOpt(OUTFILE).hasArg()
.withDescription(
Option outFile = Option.builder().longOpt(OUTFILE).hasArg()
.desc(
"Local path of file to write output to, if not specified "
+ "defaults will be used.")
.create();
.build();
getPlanOptions().addOption(outFile);
opt.addOption(outFile);
Option bandwidth = OptionBuilder.withLongOpt(BANDWIDTH).hasArg()
.withDescription(
Option bandwidth = Option.builder().longOpt(BANDWIDTH).hasArg()
.desc(
"Maximum disk bandwidth (MB/s) in integer to be consumed by "
+ "diskBalancer. e.g. 10 MB/s.")
.create();
.build();
getPlanOptions().addOption(bandwidth);
opt.addOption(bandwidth);
Option threshold = OptionBuilder.withLongOpt(THRESHOLD)
Option threshold = Option.builder().longOpt(THRESHOLD)
.hasArg()
.withDescription("Percentage of data skew that is tolerated before"
.desc("Percentage of data skew that is tolerated before"
+ " disk balancer starts working. For example, if"
+ " total data on a 2 disk node is 100 GB then disk"
+ " balancer calculates the expected value on each disk,"
@ -314,22 +313,22 @@ private void addPlanCommands(Options opt) {
+ " on a single disk needs to be more than 60 GB"
+ " (50 GB + 10% tolerance value) for Disk balancer to"
+ " balance the disks.")
.create();
.build();
getPlanOptions().addOption(threshold);
opt.addOption(threshold);
Option maxError = OptionBuilder.withLongOpt(MAXERROR)
Option maxError = Option.builder().longOpt(MAXERROR)
.hasArg()
.withDescription("Describes how many errors " +
.desc("Describes how many errors " +
"can be tolerated while copying between a pair of disks.")
.create();
.build();
getPlanOptions().addOption(maxError);
opt.addOption(maxError);
Option verbose = OptionBuilder.withLongOpt(VERBOSE)
.withDescription("Print out the summary of the plan on console")
.create();
Option verbose = Option.builder().longOpt(VERBOSE)
.desc("Print out the summary of the plan on console")
.build();
getPlanOptions().addOption(verbose);
opt.addOption(verbose);
}
@ -338,11 +337,11 @@ private void addPlanCommands(Options opt) {
* Adds Help to the options.
*/
private void addHelpCommands(Options opt) {
Option help = OptionBuilder.withLongOpt(HELP)
.hasOptionalArg()
.withDescription("valid commands are plan | execute | query | cancel" +
Option help = Option.builder().longOpt(HELP)
.optionalArg(true)
.desc("valid commands are plan | execute | query | cancel" +
" | report")
.create();
.build();
getHelpOptions().addOption(help);
opt.addOption(help);
}
@ -353,17 +352,17 @@ private void addHelpCommands(Options opt) {
* @param opt Options
*/
private void addExecuteCommands(Options opt) {
Option execute = OptionBuilder.withLongOpt(EXECUTE)
Option execute = Option.builder().longOpt(EXECUTE)
.hasArg()
.withDescription("Takes a plan file and " +
.desc("Takes a plan file and " +
"submits it for execution by the datanode.")
.create();
.build();
getExecuteOptions().addOption(execute);
Option skipDateCheck = OptionBuilder.withLongOpt(SKIPDATECHECK)
.withDescription("skips the date check and force execute the plan")
.create();
Option skipDateCheck = Option.builder().longOpt(SKIPDATECHECK)
.desc("skips the date check and force execute the plan")
.build();
getExecuteOptions().addOption(skipDateCheck);
opt.addOption(execute);
@ -376,20 +375,20 @@ private void addExecuteCommands(Options opt) {
* @param opt Options
*/
private void addQueryCommands(Options opt) {
Option query = OptionBuilder.withLongOpt(QUERY)
Option query = Option.builder().longOpt(QUERY)
.hasArg()
.withDescription("Queries the disk balancer " +
.desc("Queries the disk balancer " +
"status of a given datanode.")
.create();
.build();
getQueryOptions().addOption(query);
opt.addOption(query);
// Please note: Adding this only to Query options since -v is already
// added to global table.
Option verbose = OptionBuilder.withLongOpt(VERBOSE)
.withDescription("Prints details of the plan that is being executed " +
Option verbose = Option.builder().longOpt(VERBOSE)
.desc("Prints details of the plan that is being executed " +
"on the node.")
.create();
.build();
getQueryOptions().addOption(verbose);
}
@ -399,17 +398,17 @@ private void addQueryCommands(Options opt) {
* @param opt Options
*/
private void addCancelCommands(Options opt) {
Option cancel = OptionBuilder.withLongOpt(CANCEL)
Option cancel = Option.builder().longOpt(CANCEL)
.hasArg()
.withDescription("Cancels a running plan using a plan file.")
.create();
.desc("Cancels a running plan using a plan file.")
.build();
getCancelOptions().addOption(cancel);
opt.addOption(cancel);
Option node = OptionBuilder.withLongOpt(NODE)
Option node = Option.builder().longOpt(NODE)
.hasArg()
.withDescription("Cancels a running plan using a plan ID and hostName")
.create();
.desc("Cancels a running plan using a plan ID and hostName")
.build();
getCancelOptions().addOption(node);
opt.addOption(node);
@ -421,26 +420,26 @@ private void addCancelCommands(Options opt) {
* @param opt Options
*/
private void addReportCommands(Options opt) {
Option report = OptionBuilder.withLongOpt(REPORT)
.withDescription("List nodes that will benefit from running " +
Option report = Option.builder().longOpt(REPORT)
.desc("List nodes that will benefit from running " +
"DiskBalancer.")
.create();
.build();
getReportOptions().addOption(report);
opt.addOption(report);
Option top = OptionBuilder.withLongOpt(TOP)
Option top = Option.builder().longOpt(TOP)
.hasArg()
.withDescription("specify the number of nodes to be listed which has" +
.desc("specify the number of nodes to be listed which has" +
" data imbalance.")
.create();
.build();
getReportOptions().addOption(top);
opt.addOption(top);
Option node = OptionBuilder.withLongOpt(NODE)
Option node = Option.builder().longOpt(NODE)
.hasArg()
.withDescription("Datanode address, " +
.desc("Datanode address, " +
"it can be DataNodeID, IP or hostname.")
.create();
.build();
getReportOptions().addOption(node);
opt.addOption(node);
}

View File

@ -39,7 +39,6 @@
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
@ -247,39 +246,33 @@ private static void err(String msg) {
private static CommandLine parseArgs(Options opts, String... args)
throws IllegalArgumentException {
OptionBuilder.withArgName("NameNode|DataNode");
OptionBuilder.hasArg();
OptionBuilder.withDescription("specify jmx service (NameNode by default)");
Option jmx_service = OptionBuilder.create("service");
Option jmxService = Option.builder("service")
.argName("NameNode|DataNode").hasArg()
.desc("specify jmx service (NameNode by default)").build();
OptionBuilder.withArgName("mbean server");
OptionBuilder.hasArg();
OptionBuilder
.withDescription("specify mbean server (localhost by default)");
Option jmx_server = OptionBuilder.create("server");
Option jmxServer = Option.builder("server")
.argName("mbean server").hasArg()
.desc("specify mbean server (localhost by default)").build();
OptionBuilder.withDescription("print help");
Option jmx_help = OptionBuilder.create("help");
Option jmxHelp = Option.builder("help").desc("print help").build();
OptionBuilder.withArgName("mbean server port");
OptionBuilder.hasArg();
OptionBuilder.withDescription("specify mbean server port, "
+ "if missing - it will try to connect to MBean Server in the same VM");
Option jmx_port = OptionBuilder.create("port");
Option jmxPort = Option.builder("port")
.argName("mbean server port")
.hasArg().desc("specify mbean server port, "
+ "if missing - it will try to connect to MBean Server in the same VM").build();
OptionBuilder.withArgName("VM's connector url");
OptionBuilder.hasArg();
OptionBuilder.withDescription("connect to the VM on the same machine;"
Option jmxLocalVM = Option.builder("localVM")
.argName("VM's connector url").hasArg()
.desc("connect to the VM on the same machine;"
+ "\n use:\n jstat -J-Djstat.showUnsupported=true -snap <vmpid> | "
+ "grep sun.management.JMXConnectorServer.address\n "
+ "to find the url");
Option jmx_localVM = OptionBuilder.create("localVM");
+ "to find the url").build();
opts.addOption(jmx_server);
opts.addOption(jmx_help);
opts.addOption(jmx_service);
opts.addOption(jmx_port);
opts.addOption(jmx_localVM);
opts.addOption(jmxServer);
opts.addOption(jmxHelp);
opts.addOption(jmxService);
opts.addOption(jmxPort);
opts.addOption(jmxLocalVM);
CommandLine commandLine = null;
CommandLineParser parser = new GnuParser();

View File

@ -28,7 +28,7 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
@ -100,15 +100,13 @@ public static Options buildOptions() {
// Build in/output file arguments, which are required, but there is no
// addOption method that can specify this
OptionBuilder.isRequired();
OptionBuilder.hasArgs();
OptionBuilder.withLongOpt("outputFilename");
options.addOption(OptionBuilder.create("o"));
OptionBuilder.isRequired();
OptionBuilder.hasArgs();
OptionBuilder.withLongOpt("inputFilename");
options.addOption(OptionBuilder.create("i"));
Option optionOutputFileName =
Option.builder("o").required().hasArgs().longOpt("outputFilename").build();
options.addOption(optionOutputFileName);
Option optionInputFilename =
Option.builder("i").required().hasArgs().longOpt("inputFilename").build();
options.addOption(optionInputFilename);
options.addOption("p", "processor", true, "");
options.addOption("v", "verbose", false, "");

View File

@ -26,7 +26,7 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
@ -177,16 +177,10 @@ public static Options buildOptions() {
// Build in/output file arguments, which are required, but there is no
// addOption method that can specify this
OptionBuilder.isRequired();
OptionBuilder.hasArgs();
OptionBuilder.withLongOpt("outputFile");
options.addOption(OptionBuilder.create("o"));
OptionBuilder.isRequired();
OptionBuilder.hasArgs();
OptionBuilder.withLongOpt("inputFile");
options.addOption(OptionBuilder.create("i"));
options.addOption(Option.builder("o").required().hasArgs().longOpt("outputFile").build());
options.addOption(Option.builder("i").required().hasArgs().longOpt("inputFile").build());
options.addOption("p", "processor", true, "");
options.addOption("h", "help", false, "");
options.addOption("maxSize", true, "");

View File

@ -24,7 +24,7 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
@ -137,10 +137,8 @@ private static Options buildOptions() {
// Build in/output file arguments, which are required, but there is no
// addOption method that can specify this
OptionBuilder.isRequired();
OptionBuilder.hasArgs();
OptionBuilder.withLongOpt("inputFile");
options.addOption(OptionBuilder.create("i"));
Option optionInputFile = Option.builder("i").required().hasArgs().longOpt("inputFile").build();
options.addOption(optionInputFile);
options.addOption("o", "outputFile", true, "");
options.addOption("p", "processor", true, "");

View File

@ -29,7 +29,7 @@
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.conf.Configuration;
@ -88,23 +88,23 @@ private Options makeOptions() {
.addOption("httpport", true, "NameNode http port (default 0--we choose)")
.addOption("namenode", true, "URL of the namenode (default "
+ "is either the DFS cluster or a temporary dir)")
.addOption(OptionBuilder
.addOption(Option.builder("D")
.hasArgs()
.withArgName("property=value")
.withDescription("Options to pass into configuration object")
.create("D"))
.addOption(OptionBuilder
.argName("property=value")
.desc("Options to pass into configuration object")
.build())
.addOption(Option.builder("writeConfig")
.hasArg()
.withArgName("path")
.withDescription("Save configuration to this XML file.")
.create("writeConfig"))
.addOption(OptionBuilder
.argName("path")
.desc("Save configuration to this XML file.")
.build())
.addOption(Option.builder("writeDetails")
.hasArg()
.withArgName("path")
.withDescription("Write basic information to this JSON file.")
.create("writeDetails"))
.addOption(OptionBuilder.withDescription("Prints option help.")
.create("help"));
.argName("path")
.desc("Write basic information to this JSON file.")
.build())
.addOption(Option.builder("help").desc("Prints option help.")
.build());
return options;
}

View File

@ -30,7 +30,6 @@
import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.Parser;
@ -346,12 +345,14 @@ static class CommandLineParser {
void addOption(String longName, boolean required, String description,
String paramName) {
Option option = OptionBuilder.withArgName(paramName).hasArgs(1).withDescription(description).isRequired(required).create(longName);
Option option = Option.builder(longName).argName(paramName)
.hasArg().desc(description).required(required).build();
options.addOption(option);
}
void addArgument(String name, boolean required, String description) {
Option option = OptionBuilder.withArgName(name).hasArgs(1).withDescription(description).isRequired(required).create();
Option option = Option.builder().argName(name)
.hasArg().desc(description).required(required).build();
options.addOption(option);
}

View File

@ -31,7 +31,7 @@
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.fs.FileSystem;
@ -105,18 +105,17 @@ private Options makeOptions() {
.addOption("jhsport", true,
"JobHistoryServer port (default 0--we choose)")
.addOption(
OptionBuilder.hasArgs().withArgName("property=value")
.withDescription("Options to pass into configuration object")
.create("D"))
Option.builder("D").hasArgs().argName("property=value")
.desc("Options to pass into configuration object")
.build())
.addOption(
OptionBuilder.hasArg().withArgName("path").withDescription(
"Save configuration to this XML file.").create("writeConfig"))
Option.builder("writeConfig").hasArg().argName("path").desc(
"Save configuration to this XML file.").build())
.addOption(
OptionBuilder.hasArg().withArgName("path").withDescription(
"Write basic information to this JSON file.").create(
"writeDetails"))
Option.builder("writeDetails").argName("path").desc(
"Write basic information to this JSON file.").build())
.addOption(
OptionBuilder.withDescription("Prints option help.").create("help"));
Option.builder("help").desc("Prints option help.").build());
return options;
}

View File

@ -20,7 +20,7 @@
import org.apache.hadoop.classification.VisibleForTesting;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
@ -484,53 +484,53 @@ boolean checkSymlink(File jar) {
@VisibleForTesting
boolean parseArguments(String[] args) throws IOException {
Options opts = new Options();
opts.addOption(OptionBuilder.create("h"));
opts.addOption(OptionBuilder.create("help"));
opts.addOption(OptionBuilder
.withDescription("Input class path. Defaults to the default classpath.")
.hasArg().create("input"));
opts.addOption(OptionBuilder
.withDescription(
opts.addOption(Option.builder("h").build());
opts.addOption(Option.builder("help").build());
opts.addOption(Option.builder("input")
.desc("Input class path. Defaults to the default classpath.")
.hasArg().build());
opts.addOption(Option.builder("whitelist")
.desc(
"Regex specifying the full path of jars to include in the" +
" framework tarball. Default is a hardcoded set of jars" +
" considered necessary to include")
.hasArg().create("whitelist"));
opts.addOption(OptionBuilder
.withDescription(
.hasArg().build());
opts.addOption(Option.builder("blacklist")
.desc(
"Regex specifying the full path of jars to exclude in the" +
" framework tarball. Default is a hardcoded set of jars" +
" considered unnecessary to include")
.hasArg().create("blacklist"));
opts.addOption(OptionBuilder
.withDescription(
.hasArg().build());
opts.addOption(Option.builder("fs")
.desc(
"Target file system to upload to." +
" Example: hdfs://foo.com:8020")
.hasArg().create("fs"));
opts.addOption(OptionBuilder
.withDescription(
.hasArg().build());
opts.addOption(Option.builder("target")
.desc(
"Target file to upload to with a reference name." +
" Example: /usr/mr-framework.tar.gz#mr-framework")
.hasArg().create("target"));
opts.addOption(OptionBuilder
.withDescription(
.hasArg().build());
opts.addOption(Option.builder("initialReplication")
.desc(
"Desired initial replication count. Default 3.")
.hasArg().create("initialReplication"));
opts.addOption(OptionBuilder
.withDescription(
.hasArg().build());
opts.addOption(Option.builder("finalReplication")
.desc(
"Desired final replication count. Default 10.")
.hasArg().create("finalReplication"));
opts.addOption(OptionBuilder
.withDescription(
.hasArg().build());
opts.addOption(Option.builder("acceptableReplication")
.desc(
"Desired acceptable replication count. Default 9.")
.hasArg().create("acceptableReplication"));
opts.addOption(OptionBuilder
.withDescription(
.hasArg().build());
opts.addOption(Option.builder("timeout")
.desc(
"Desired timeout for the acceptable" +
" replication in seconds. Default 10")
.hasArg().create("timeout"));
opts.addOption(OptionBuilder
.withDescription("Ignore symlinks into the same directory")
.create("nosymlink"));
.hasArg().build());
opts.addOption(Option.builder("nosymlink")
.desc("Ignore symlinks into the same directory")
.build());
GenericOptionsParser parser = new GenericOptionsParser(opts, args);
if (parser.getCommandLine().hasOption("help") ||
parser.getCommandLine().hasOption("h")) {

View File

@ -113,7 +113,7 @@
<!-- Apache Commons dependencies -->
<commons-beanutils.version>1.9.4</commons-beanutils.version>
<commons-cli.version>1.2</commons-cli.version>
<commons-cli.version>1.5.0</commons-cli.version>
<commons-codec.version>1.15</commons-codec.version>
<commons-collections.version>3.2.2</commons-collections.version>
<commons-compress.version>1.21</commons-compress.version>

View File

@ -21,7 +21,7 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.PosixParser;
import org.apache.hadoop.conf.Configuration;
@ -65,24 +65,25 @@ public GenerateBlockImagesDriver(Configuration conf) {
public int run(String[] args) throws Exception {
Options options = new Options();
options.addOption("h", "help", false, "Shows this message");
options.addOption(OptionBuilder.withArgName("Input path of the XML fsImage")
.hasArg().isRequired(true)
.withDescription("Input path to the Hadoop fsImage XML file (required)")
.create(FSIMAGE_INPUT_PATH_ARG));
options.addOption(OptionBuilder.withArgName("BlockImage output directory")
.hasArg().isRequired(true)
.withDescription("Directory where the generated files containing the "
options.addOption(Option.builder(FSIMAGE_INPUT_PATH_ARG)
.argName("Input path of the XML fsImage")
.hasArg().required(true)
.desc("Input path to the Hadoop fsImage XML file (required)")
.build());
options.addOption(Option.builder(BLOCK_IMAGE_OUTPUT_ARG).argName("BlockImage output directory")
.hasArg().required(true)
.desc("Directory where the generated files containing the "
+ "block listing for each DataNode should be stored (required)")
.create(BLOCK_IMAGE_OUTPUT_ARG));
options.addOption(OptionBuilder.withArgName("Number of reducers").hasArg()
.isRequired(false)
.withDescription(
.build());
options.addOption(Option.builder(NUM_REDUCERS_ARG).argName("Number of reducers").hasArg()
.required(false)
.desc(
"Number of reducers for this job (defaults to number of datanodes)")
.create(NUM_REDUCERS_ARG));
options.addOption(OptionBuilder.withArgName("Number of datanodes").hasArg()
.isRequired(true)
.withDescription("Number of DataNodes to create blocks for (required)")
.create(NUM_DATANODES_ARG));
.build());
options.addOption(Option.builder(NUM_DATANODES_ARG).argName("Number of datanodes").hasArg()
.required(true)
.desc("Number of DataNodes to create blocks for (required)")
.build());
CommandLineParser parser = new PosixParser();
CommandLine cli = parser.parse(options, args);

View File

@ -26,7 +26,6 @@
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.OptionGroup;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.PosixParser;
@ -64,28 +63,28 @@ public int run(String[] args) throws Exception {
+ " argument to show help for a specific mapper class.");
Options options = new Options();
options.addOption(helpOption);
options.addOption(OptionBuilder.withArgName("NN URI").hasArg()
.withDescription("URI of the NameNode under test").isRequired()
.create(NN_URI));
options.addOption(Option.builder(NN_URI).argName("NN URI").hasArg()
.desc("URI of the NameNode under test").required()
.build());
OptionGroup startTimeOptions = new OptionGroup();
startTimeOptions.addOption(OptionBuilder.withArgName("Start Timestamp")
.hasArg().withDescription("Mapper start UTC timestamp in ms")
.create(START_TIMESTAMP_MS));
startTimeOptions.addOption(Option.builder(START_TIMESTAMP_MS).argName("Start Timestamp")
.hasArg().desc("Mapper start UTC timestamp in ms")
.build());
startTimeOptions
.addOption(OptionBuilder.withArgName("Start Time Offset").hasArg()
.withDescription("Mapper start time as an offset from current "
.addOption(Option.builder(START_TIME_OFFSET_DEFAULT).argName("Start Time Offset").hasArg()
.desc("Mapper start time as an offset from current "
+ "time. Human-readable formats accepted, e.g. 10m (default "
+ START_TIME_OFFSET_DEFAULT + ").")
.create(START_TIME_OFFSET));
.build());
options.addOptionGroup(startTimeOptions);
Option mapperClassOption = OptionBuilder.withArgName("Mapper ClassName")
Option mapperClassOption = Option.builder(MAPPER_CLASS_NAME).argName("Mapper ClassName")
.hasArg()
.withDescription("Class name of the mapper; must be a WorkloadMapper "
.desc("Class name of the mapper; must be a WorkloadMapper "
+ "subclass. Mappers supported currently: \n"
+ "1. AuditReplayMapper \n"
+ "2. CreateFileMapper \n"
+ "Fully specified class names are also supported.")
.isRequired().create(MAPPER_CLASS_NAME);
.required().build();
options.addOption(mapperClassOption);
Options helpOptions = new Options();

View File

@ -34,7 +34,6 @@
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -382,16 +381,17 @@ protected void msg(String msg) {
private Option createOption(String name, String desc,
String argName, int max, boolean required){
return OptionBuilder
.withArgName(argName)
.hasArgs(max)
.withDescription(desc)
.isRequired(required)
.create(name);
return Option.builder(name)
.argName(argName)
.hasArgs()
.numberOfArgs(max)
.desc(desc)
.required(required)
.build();
}
private Option createBoolOption(String name, String desc){
return OptionBuilder.withDescription(desc).create(name);
return Option.builder(name).desc(desc).build();
}
private void validate(final Path path) throws IOException {