我知道这个问题在这里和其他地方已被多次询问过,因为我正在寻找答案.但是,它仍然让我感到困惑,为什么命令行解析器库不提供这种常见的使用场景,其中我有一组子命令,每个子命令都有自己的必需和可选参数集.类似的构造可以在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类,每个子命令扩展它并自己注册......作为一种分解它以便于管理的方法.如果任何成熟的框架可以做到这一点,我会在这里感谢任何指针.
我对当前解析器功能的理解可能是错的,但是我们非常感激任何洞察力.