[picocli][1] is different from other Java CLI libraries: * It is designed to be included in source form. This lets users run picocli-based applications without requiring picocli as an external dependency. * Generates polished and easily tailored usage help, using ANSI colors when the underlying platform supports it. * [Autocompletion][2] for your Java command line applications on supported platforms Example usage help message: [![enter image description here][3]][3] Quick overview: * Effortless command line parsing - just annotate fields * Strongly typed everything - command line options as well as positional parameters * full support for both GNU style and POSIX clustered short options (so it handles `<command> -xvfInputFile` as well as `<command> -x -v -f InputFile`) * An arity model that allows a minimum, maximum and variable number of parameters, e.g, `"1..*"`, `"3..5"` * Subcommands * Works with Java 5 and higher * Well-structured [user manual][1] Usage help is the face of your application, so be creative and have fun! [![enter image description here][4]][4] Update: Picocli is also actively maintained. Since the original post, many new features were added, for example: * programmatic API as well as annotations API * Dependency Injection container integration * JLine integration: delegate to AutoComplete for your command’s Completer implementation * interface methods can be annotated with `@Option` or `@Parameters` (picocli creates a synthetic implementation that returns the matched options) * class methods can be annotated with `@Option` or `@Parameters` (so you can validate options and positional parameters) * support for `@Command` methods for extra compact code * internationalization with resource bundles ---------- *Disclaimer: I am the author.* [1]: http://picocli.info/ [2]: http://picocli.info/autocomplete.html [3]: https://i.sstatic.net/bs9co.png [4]: https://i.sstatic.net/cHGAr.png