來自picocli的幾個java cli 處理框架的比較,轉自:https://github.com/remkop/picocli/wiki/CLI-Comparison
Overview
| Name | Creator | First Public Release |
Latest Stable Version |
Latest Release Date |
Minimum Java Version |
Software License |
|---|---|---|---|---|---|---|
| Remko Popma |
2017-04-15 |
4.1.2 |
2019-12-08 |
5 |
Apache 2.0 |
|
| Airlift |
2012-01-15 |
0.8 |
2017-08-28 |
8 |
Apache 2.0 |
|
| Rob Vesse |
2015-06-22 |
2.7.2 |
2019-07-23 |
7 |
Apache 2.0 |
|
| Tatsuhiro Tsujikawa |
2011-11-30 |
0.8.1 |
2017-09-18 |
6 |
MIT |
|
| John Lloyd |
Fall 2004 |
1 |
Fall 2004 |
4 |
- |
|
| Kohsuke Kawaguchi |
2005-05-10 |
2.33 |
2016-01-31 |
6 |
||
| Marco Tonti |
2006-05-16 |
0.9 |
2006-05-16 |
4 |
LGPL 2 |
|
| Sam Pullara |
2011-09-18 |
1.1.5 |
2019-01-25 |
5 |
Apache 2.0 |
|
| Stephen Ostermiller |
2003-01 |
1.08.02 |
2010 |
5 |
GPL |
|
| Jan Kroken |
2014-03-06 |
1.7.0 |
2014-03-06 |
8 |
Apache 2.0 |
|
| 2014-07-21 |
0.6.0 |
2014-08-16 |
6 |
BSD |
||
| The Digital Product Meta Library |
2006-12-01 |
2.1.1 |
2008-08-22 |
6 |
Apache 2.0 |
|
| Matthias Laux |
2004-08 |
1.0 |
2004-08 |
5 |
- |
|
| Apache Commons |
2002-11-06 |
1.4 |
2017-03-09 |
5 |
Apache 2.0 |
|
| 2013-03-18 |
0.1.1 |
2013-08-22 |
6 |
Apache 2.0 |
||
| 2003 |
1.0 |
2013-02-27 |
4 |
BSD |
||
| Steve Purcell & Ewan Mellor |
2001 |
1.0 |
2013-04-17 |
5 |
BSD |
|
| Aaron M. Renn |
1998 |
1.0.14 |
2012-02-08 |
4 |
LGPL 2 |
|
| Giles Winstanley |
2011-07-05 |
2.0 |
2018-12-04 |
8 |
BSD |
|
| Lynne Lawrence |
2002-10-29 |
2.0.0 |
2002-10-29 |
4 |
Mozilla Public License 1.1 |
|
| Cédric Beust |
2010-10-12 |
1.71 |
2017-05-17 |
8 |
Apache 2.0 |
|
| Brett Wool- dridge |
2005-06-22 |
1.2 |
2011-08-19 |
? |
zlib/libpng (binary distribution) |
|
| Tim Wood |
2011-10-20 |
0.8.9 |
2014-02-13 |
6 |
Apache 2.0 |
|
| Paul Holser |
06-Nov-2011? |
5.0.4 |
2017-07-14 |
8 |
MIT |
|
| Martian Software |
2004-02-24 |
2.1 |
2006-08-03 |
4 |
LGPL |
|
| Ferran Busquets |
2007-12-08 |
1.2.2 |
2008-07-20 |
4? |
Apache 2.0 |
|
| jf.zarama |
2008-08-09 |
0.0.93 |
2011-09-19 |
4 |
Apache 2.0 |
|
| Damian Ryan Eads |
2001-10-18 |
0.2.1 |
2001-10-24 |
3 |
GPL |
|
| ryenus |
2013-03-23 |
1.1.1 |
2013-09-18 |
7 |
MIT |
|
| Andrew S. Townley |
2003-06-07 |
3.0.0-pre3 |
2005-02-06 |
4 |
BSD |
| Name | API | Generates Usage Help |
Custom- izable Usage Help |
User Manual |
Facilitates Source Inclusion |
Required depen- dencies |
|---|---|---|---|---|---|---|
| annotations & reflection, and builder API (use either or both together) |
yes |
yes |
yes |
yes |
- |
|
| annotations & reflection |
yes |
readme |
no |
Google Guava |
||
| annotations & reflection |
yes |
yes |
no |
Javax Inject, Apache Commons Collections 4 |
||
| Builder |
yes |
yes |
no |
- |
||
| Builder |
yes |
javadoc |
yes |
- |
||
| annotations & reflection |
yes |
partial |
no |
- |
||
| method name reflection |
yes |
readme |
yes |
- |
||
| annotations & reflection |
yes |
readme |
yes |
- |
||
| Builder |
yes |
readme |
yes |
- |
||
| annotations & reflection |
no |
- |
readme |
no |
- |
|
| Generates code from usage help |
yes |
yes |
readme |
yes |
- |
|
| Builder |
yes |
yes |
no |
? |
||
| Builder |
no |
- |
yes |
yes |
- |
|
| Builder |
yes |
yes |
yes |
- |
||
| Builder |
yes |
readme & javadoc |
no |
Google Guava |
||
| Descriptor & reflection |
no |
- |
no |
yes |
- |
|
| Builder |
no |
- |
no |
yes |
- |
|
| Getopt |
no |
- |
javadoc |
yes |
- |
|
| Builder |
yes |
readme |
yes |
- |
||
| Builder |
yes |
yes |
yes |
- |
||
| annotations & reflection |
yes |
no |
yes |
no |
- |
|
| Generates code from XML |
yes |
yes |
yes |
- |
||
| annotations & reflection |
yes |
yes |
no |
optionally Google Guava, Google Guice, LambdaJ, Commons Lang 3 |
||
| Builder |
yes |
yes |
no |
- |
||
| Builder |
yes |
yes |
no |
- |
||
| Builder |
yes |
yes |
no |
- |
||
| Builder |
yes |
readme |
yes |
- |
||
| Builder |
yes |
yes |
yes |
- |
||
| annotations & reflection |
yes |
readme |
yes |
- |
||
| Declarative with callbacks |
yes |
yes |
no |
- |
| Name | POSIX Short Option Groups |
Configurable Option Prefix |
Strongly Typed Option Parameters |
Strongly Typed Positional Parameters |
Multi-value Options |
|---|---|---|---|---|---|
| yes |
yes |
yes |
yes |
yes |
|
| yes |
no |
yes |
yes |
yes |
|
| yes |
no |
yes |
no |
yes |
|
| yes |
yes |
yes |
no |
yes |
|
| no |
yes |
yes |
yes |
yes |
|
| no |
yes |
yes |
yes |
yes |
|
| no |
no |
yes |
no |
yes |
|
| no |
no |
yes |
no |
no |
|
| no |
no |
no |
no |
no |
|
| yes |
no |
no |
no |
no |
|
| yes |
no |
no |
no |
yes |
|
| yes |
no |
no |
no |
yes |
|
| no |
no |
no |
no |
yes |
|
| yes |
no |
no |
no |
yes |
|
| no |
yes |
yes |
yes |
yes |
|
| no |
no |
yes |
? |
yes |
|
| yes |
no |
yes |
no |
no |
|
| yes |
no |
no |
no |
no |
|
| yes |
no |
yes |
no |
yes |
|
| no |
no |
yes |
no |
no |
|
| no |
yes |
yes |
no |
yes |
|
| no |
no |
numbers |
no |
no |
|
| no |
no |
yes |
yes |
yes |
|
| yes |
no |
yes |
yes |
yes |
|
| no |
no |
yes |
no |
no |
|
| no |
yes |
yes |
no |
yes |
|
| no |
yes |
no |
no |
no |
|
| no |
no |
yes |
no |
yes |
|
| no |
no |
yes |
no |
no |
|
| yes |
no |
no |
no |
yes |
| Name | Subcommands | Exclusive Options |
Configurable Validation |
i18n |
|---|---|---|---|---|
| yes |
yes (in 4.0) |
minimal (use jsr-380) |
yes |
|
| yes |
no |
no |
no |
|
| yes |
yes |
no |
no |
|
| yes |
yes |
no |
layout is locale-aware |
|
| no |
no |
no |
no |
|
| yes |
yes |
no |
yes |
|
| no |
no |
no |
no |
|
| no |
no |
no |
no |
|
| no |
no |
yes |
no |
|
| no |
no |
no |
no |
|
| no |
yes |
no |
no |
|
| yes |
no |
yes |
no |
|
| no |
no |
no |
no |
|
| no |
no |
no |
no |
|
| yes |
no |
no |
no |
|
| no |
no |
no |
no |
|
| no |
no |
no |
no |
|
| no |
no |
no |
yes |
|
| no |
no |
no |
yes |
|
| no |
no |
no |
yes |
|
| yes |
no |
yes |
yes |
|
| no |
no |
no |
no |
|
| no |
no |
no |
yes |
|
| no |
no |
no |
no |
|
| no |
no |
no |
no |
|
| no |
no |
no |
no |
|
| no |
no |
yes |
no |
|
| yes |
no |
no |
no |
|
| yes |
no |
no |
no |
|
| no |
yes |
no |
yes |
