【发布时间】:2014-08-25 20:09:32
【问题描述】:
我正在尝试使用 commons-cli 创建一个简单的参数解析器,但我似乎无法弄清楚如何创建以下选项:
java ... com.my.path.to.MyClass producer
java ... com.my.path.to.MyClass consumer -j 8
我的程序的第一个参数应该是producer 或consumer,定义我的程序将运行的模式。如果它处于consumer 模式,我想要一个-j 参数定义要服务的线程数。
这是我目前得到的:
Options options = new Options();
options.addOption("mode", false, "Things.");
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("startup.sh", options);
当我打印出这些选项时,mode 参数显示为-mode。
在 Python 的 argparse 中,我只需执行以下操作:
parser = argparse.ArgumentParser()
parser.add_argument('mode', choices=('producer', 'consumer'), required=True)
parser.print_help()
这正是我想要的。如何在 commons-cli 中执行此操作?
【问题讨论】:
-
我的懒惰方法是为 Producer 创建一个类,为 Consumer 创建另一个类(抱歉,我知道这不是一个真正的答案)