1

假设我有一个使用 org.apache.commons.cli 包来获取命令行选项的工具。我定义了一个选项

Options opts    = new Options();
opts.addOption("v", "version",  false, "print tool version information");

因此用户可以使用 -v 或 --version 命令行选项调用我的工具。

问题是,我能否在我的代码中判断用户输入的是 -v 还是 --version?

我的想法是将命令行选项的长版本与详细输出相关联,将短版本与非详细输出相关联。因此,如果用户通过 -v,他/她将获得该工具的版本号,但如果用户输入--version,他/她将获得该工具的版本、依赖项的版本、其他一些版本控制和供应商信息,等等

两个问题:

  1. 可以用 org.apache.commons.cli 有效地完成吗?
  2. 从用户的角度来看,这是一个好主意吗?这是一种常见的做法还是我在这里发明了一些深奥的东西?

对这种方法的实施和理念的经验丰富的想法值得赞赏。

提前致谢

4

1 回答 1

1

我认为您不会以这种方式获得该信息,因为命令行被解析为匹配的选项,而在解析后无法访问实际的命令行。

我将在这里定义两个单独的选项对象,一个用于“v”,一个用于“版本”,然后您可以检查这两个选项中的哪一个匹配并相应地采取行动。

于 2017-02-24T06:04:51.770 回答