java - 我可以区分 org.apache.commons.cli 中的短选项和长选项吗

标签 java apache command-line-interface apache-commons-cli

假设我有一个使用 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. 从用户的角度来看这是一个好主意吗?这是一种常见的做法还是我在这里发明了一些深奥的东西?

赞赏对实现和这种方法的理念有丰富经验的想法。

提前致谢

最佳答案

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

我会在这里定义两个单独的选项对象,一个代表“v”,一个代表“版本”,然后您可以检查这两个选项中哪一个匹配并采取相应的操作。

关于java - 我可以区分 org.apache.commons.cli 中的短选项和长选项吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42421251/

相关文章:

java - 线程 "main"java.lang.ArrayIndexOutOfBoundsException : 65 中的异常

PHP 在 Windows 机器上安装 SSH2

.net - gcroot 集合 - 元素访问

amazon-web-services - 如何在终端中编辑 AWS 凭证?

windows - 如何仅针对Windows 7下载Docker CLI

java - 了解死锁

Java:线程间变量的同步

java - 访问 Webcontent 文件夹外部的文件

php - 如何更新 PHP CLI OSX?

php 上传文件错误#8(当它是 Linux 可执行文件时)