8

这个问题的主要目标是创建一个包含易于使用、广泛(或多或少)Java CLI 库(及其特性)的表。所以,如果有人需要这样的库,他可以从这个页面中选择一个,过滤表以获取所需的功能。

限制

  1. 仅限开源库。
  2. 这不是涵盖所有现有 CLI 库的问题的目标。如果我们不添加带有难以找到的文档的“几乎死”的库,那么选择有用的东西会更容易。如果您不确定您的 CLI 库,但对它的功能感到自豪并且可以描述为什么它比其他库更好,请添加带有信息的答案/评论。如果回答/评论获得 10 票赞成,则可以将此类库添加到表中。
  3. 同样适用于向表格添加功能。如果功能不是很有用并且您不确定 - 请使用“10 upvotes”方法进行检查。
4

2 回答 2

13

Java CLI 库和功能表

Java CLI 库和功能表。
如果要更新此表,则应在此答案末尾编辑 CSV 数据。将数据复制到文件,将文件导入 GoogleDocs 电子表格。与所有人共享电子表格以只读方式并替换上面的链接。

表中使用的缩写:

  • 是(是 - 好)
  • p(部分 - 平均)
  • n(没有 - 不好)
  • u(未知 - 随意插入正确的值)

表中功能说明

功能相关(lib A 可以做一些 lib B 不能做的事情)

  1. 支持为所有参数/子参数生成用法/帮助文本。
  2. 支持至少一个附加级别的子参数(如 JCommander 中的“命令”)。
  3. 国际化。

项目状态相关(图书馆和文档仍然更新或几年没有更新)

评论:在以下所有情况下,Maven 假定Maven Central Repository和 Ivy - IvyRoundup Repository

  1. 最新发布日期(如果可用,在 Maven/Ivy 中)。
  2. 可用的最新版本(如果可用,在 Maven/Ivy 中)。
  3. Maven/Ivy 中可用版本的数量(仅计算版本,而不是里程碑或快照)。

编码风格相关功能

  1. 使用注释来提供参数格式。

带有链接的库列表(不要将链接添加到表中)

Commons CLI -示例
JOpt 简单-示例
args4j -示例
JCommander - 主页上的所有示例

故意忽略的库/功能列表的占位符


用于表格共享编辑的 CSV 数据。最好在更新 CSV 数据时更新此答案顶部的链接。但它也可以稍后更新。

表中的记录根据 Google 查询“Java CLI”排序。更多被引用的结果将是第一位的,没有人可以说我有偏见。

名称,最新发布日期,可从 Maven/Ivy 获得的最新版本,Maven/Ivy 的可用版本数,使用注释提供参数格式,为所有参数生成使用文本,支持至少一个附加级别的子参数,国际化
Commons CLI,2015-06-17,1.3.1,5,n,y,n,n
JOpt Simple,2016-09-25,5.0.3,23,n,y,n,n
args4j,2016-01-31,2.33,31,y,y,n,n
JCommander,2017-02-12,1.64,31,y,y,y,y
于 2012-04-15T18:59:10.933 回答
3

我通常确实会使用args4j来满足所有 CLI 需求,但最近我主要使用的是JCommander,这在你的列表中是缺失的。我永远不会使用 Commons CLI,因为像大多数公共库一样,活动很少,并且有更好的解决方案可用。

JCommander 也可以github 上找到,最后一次提交是 3 天前。

您对子参数的要求可能最好使用 JCommander 的命令来解决,这些命令在其网页上的 GIT CLI 上下文中进行了解释。

支持使用生成,基于@Parameter注释中的描述。

这是您的表的 JCommander 的 CSV 行:

jcommander,2012-01-11,1.23,19,y,y,y

于 2012-04-15T19:41:38.590 回答