命令行解析器和缺少子命令和分组?

Oli*_*ver 8 java picocli

我知道这个问题在这里和其他地方已被多次询问过,因为我正在寻找答案.但是,它仍然让我感到困惑,为什么命令行解析器库不提供这种常见的使用场景,其中我有一组子命令,每个子命令都有自己的必需和可选参数集.类似的构造可以在git/svn中找到,但在它们的情况下,如果我没有弄错的话,子命令命令是一个独立的程序.

总而言之,我正在寻找的是一种简单的方法:

top_command subcmd_A [ command A's options ....]
top_command subcmd_B [ command B's options ....]
...
Run Code Online (Sandbox Code Playgroud)

在java的世界中,两个经常提到的库是Apache Command CLI和JSAP.我没有看到他们中的任何一个都考虑到这一点 - 虽然你可能会调整和定制很多东西以适应......但是定义一个选项的基本流程,注册......然后在最后,解析它们都没有'为了考虑使用不同子命令的情况,验证和解析器需要以不同的方式运行.

也许这里的常识是,这是特定于应用程序的,应留给应用程序本身来处理.我能想到的一种方法是定义一个BaseCommand类,每个子命令扩展它并自己注册......作为一种分解它以便于管理的方法.如果任何成熟的框架可以做到这一点,我会在这里感谢任何指针.

我对当前解析器功能的理解可能是错的,但是我们非常感激任何洞察力.

khm*_*ise 6

嗨,只需看看jcommander,它完全支持所描述的场景.您提到了Commons CLI,它在版本1.X中是正确的,但是CLI2也存在支持它的开发,但不幸的是这个版本从未发布过.