Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Picocli is a modern framework for building powerful, user-friendly, GraalVM-enabled command line apps with ease. It supports colors, autocompletion, subcommands, and more. In 1 source file so apps can include as source & avoid adding a dependency. Written in Java, usable from Groovy, Kotlin, Scala, etc.

License

NotificationsYou must be signed in to change notification settings

remkop/picocli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

picocli

GitHub ReleaseMaven CentralGitHub Actions Build StatusTestscodecovFollow @remkopopmaFollow @picocliFollow picocli on StackShare

picocli - a mighty tiny command line interface

Picocli aims to be the easiest-to-use way to create rich command line applications that can run on and off the JVM.Considering picocli? Checkwhat happy users say about picocli.

Picocli is a modern library and framework, written in Java, that contains both an annotations API and a programmatic API. It features usage help withANSI colors and styles,TAB autocompletion and nested subcommands.In a single file, so you can include itin source form.This lets users run picocli-based applications without requiring picocli as an external dependency.

Picocli-based applications can be ahead-of-time compiled to aGraalVMnative image, with extremely fast startup time and lower memory requirements,which can be distributed as a single executable file.Picocli comes with anannotation processor that automatically Graal-enables your jar during compilation.

Picocli applications can be very compact with no boilerplate code: your command (or subcommand) can be executed with asingle line of code.Simply implementRunnable orCallable, or put the business logic of your command in a@Command-annotated method.

Picocli Demo help message with ANSI colors

Picocli makes it easy to followCommand Line Interface Guidelines.

How it works: annotate your class and picocli initializes it from the command line arguments,converting the input to strongly typed data. Supports git-likesubcommands(and nestedsub-subcommands),any option prefix style, POSIX-stylegrouped short options,customtype converters,password options and more.

Picocli distinguishes betweennamed options andpositional parameters and allowsboth to bestrongly typed.Multi-valued fields can specifyan exact number of parameters or arange (e.g.,0..*,1..2).SupportsMap options like-Dkey1=val1 -Dkey2=val2, where both key and value can be strongly typed.Parsertracing facilitates troubleshooting.Command-lineargument files (@-files) allow applications to handle very long command lines.

Generates polished and easily tailoredusage helpandversion help,usingANSI colors where possible.Requires at minimum Java 5, but is designed to facilitate the use of Java 8 lambdas. Tested on allJava versions between 5 and 18-ea (inclusive).

Picocli-based command line applications can haveTAB autocompletion,interactively showing users what options and subcommands are available.When an option hascompletionCandidates or has anenum type, autocompletion can also suggest option values.Picocli can generate completion scripts for bash and zsh, and offerspicocli-shell-jline2 andpicocli-shell-jline3 modules with JLineCompleter implementations for building interactive shell applications.

Unique features in picocli include support fornegatable options,advancedquoted values,andargument groups.Argument groups can be used to create mutuallyexclusive options,mutuallydependent options,optionsections in the usage help messageandrepeating composite arguments like([-a=<a> -b=<b> -c=<c>] (-x | -y | -z))....For advanced use cases, applications can access the picocli command object model with the@Spec annotation, andimplementcustom parameter processing for option parameters if the built-in logic is insufficient.

Picocli-based applications can easilyintegrate with Dependency Injection containers.TheMicronaut microservices framework hasbuilt-in support for picocli.Quarkus has aCommand Mode with Picocli extension for facilitating the creation of picocli-based CLI applications with Quarkus.Picocli ships with apicocli-spring-boot-starter modulethat includes aPicocliSpringFactory and Spring Boot auto-configuration to use Spring dependency injection in your picocli command line application.The user manual has examples of integrating withGuice,Spring Boot,Micronaut,Quarkus and with containers that comply toCDI 2.0 specification (JSR 365).

Releases

Documentation

Older

Articles & Presentations

English

русский

Español

Français

Português

日本語

中文

Mailing List

Join thepicocli Google group if you are interested in discussing anything picocli-related and receiving announcements on new releases.

Credit

Reallinfo designed the picocli logo! Many thanks!

Commitments

This project followssemantic versioning and adheres to theZero Bugs Commitment.

Adoption

  • Picocli is now part of Groovy. From Groovy 2.5, all Groovy command line tools are picocli-based, and picocli is the underlying parser for Groovy'sCliBuilder DSL.
  • Picocli is now part of Micronaut. The Micronaut CLI has been rewritten with picocli, and Micronaut has dedicated support for running microservicesstandalone with picocli. See alsoMicronaut Picocli Guide.
  • Quarkus now offersCommand mode with picocli.
  • Picocli is now part of JUnit 5. JUnit 5.3 migrated itsConsoleLauncher from jopt-simple to picocli to support @-files (argument files); this helps users who need to specify many tests on the command line and run into system limitations.
  • Debian now offers alibpicocli-java package. Thanks toMiroslav Kravec.
  • Picocli is used in the IntuitKarate standalone JAR / executable.
  • Picocli is part ofBallerina. Ballerina uses picocli for all its command line utilities.
  • Picocli is used in theCheckStyle standalone JAR / executable from Checkstyle 8.15.
  • Picocli is included in theOpenJDK Quality Outreach list of Free Open Source Software (FOSS) projects that actively test against OpenJDK builds.
  • Picocli is used in the Apache Hadoop Ozone/HDDS command line tools, the Apache Hive benchmark CLI, ApacheIgnite TensorFlow, and Apache SlingFeature Model Converter.
  • Picocli is listed onStackShare. Please add it to your stack and add/upvote reasons why you like picocli!
  • Picocli is used in Pinterestktlint.
  • Picocli is used in Spring IOnohttp-cli.
  • TheMinecraftPicocli library facilitates the use of picocli inMinecraft Forge.
  • Simple Java Mail now offers a picocli-basedCLI.
  • jbang not only uses picocli internally, but also has a CLI template to generate an initial script: usejbang --init=cli helloworld.java to generate a sample picocli-enabled jbang script. Seeasciinema.
  • Picocli is the main library used in the CookieTemplecli-java template for building GraalVM native CLI executables in Java. Seethis preview.
  • Picocli ismentioned inCommand Line Interface Guidelines.

Glad to see more people are using picocli. We must be doing something right. :-)

Contribute by helping to promote picocli

If you like picocli, help others discover picocli:

Easy and impactful 😅

  • Give picocli a star on GitHub!
  • Upvote myStackOverflow answer to "How do I parse command line arguments in Java?"
  • Upvote myQuora answer to "What is the best way to parse command-line arguments with Java?"

Spread the joy! 🎉

  • Tweet about picocli! What do you like about it? How has it helped you? How is it different from the alternatives?
  • Mention that your project uses picocli in the documentation of your project.
  • Show that your GitHub project uses picocli, with this badge in your README.md:picocli
[![picocli](https://img.shields.io/badge/picocli-4.7.6-green.svg)](https://github.com/remkop/picocli)

Preach it! 💪

  • Perhaps the most impactful way to show people how picocli can make their life easier is to write a blog post or article, or even do a video!

Example

Annotate fields with the command line parameter names and description. Optionally implementRunnable orCallable to delegate error handling and requests for usage help or version help to picocli. For example:

importpicocli.CommandLine;importpicocli.CommandLine.Option;importpicocli.CommandLine.Parameters;importjava.io.File;@Command(name ="example",mixinStandardHelpOptions =true,version ="Picocli example 4.0")publicclassExampleimplementsRunnable {@Option(names = {"-v","--verbose" },description ="Verbose mode. Helpful for troubleshooting. Multiple -v options increase the verbosity.")privateboolean[]verbose =newboolean[0];@Parameters(arity ="1..*",paramLabel ="FILE",description ="File(s) to process.")privateFile[]inputFiles;publicvoidrun() {if (verbose.length >0) {System.out.println(inputFiles.length +" files to process...");        }if (verbose.length >1) {for (Filef :inputFiles) {System.out.println(f.getAbsolutePath());            }        }    }publicstaticvoidmain(String[]args) {// By implementing Runnable or Callable, parsing, error handling and handling user// requests for usage help or version help can be done with one line of code.intexitCode =newCommandLine(newExample()).execute(args);System.exit(exitCode);    }}

ImplementRunnable orCallable, and your command can beexecuted in one line of code. The example above uses theCommandLine.execute method to parse the command line, handle errors, handle requests for usage and version help, and invoke the business logic. Applications can callSystem.exit with the returned exit code to signal success or failure to their caller.

$ java Example -v inputFile1 inputFile22 files to process...

TheCommandLine.execute method automatically prints the usage help message if the user requested help or when the input was invalid.

Usage help message with ANSI colors

This can be customized in many ways. See the user manualsection on Executing Commands for details.

Usage Help with ANSI Colors and Styles

Colors, styles, headers, footers and section headings are easilycustomized with annotations.For example:

Longer help message with ANSI colors

See thesource code.

Usage Help API

Picocli annotations offer many ways to customize the usage help message.

If annotations are not sufficient, you can use picocli'sHelp API to customize even further.For example, your application can generate help like this with a custom layout:

Usage help message with two options per row

See thesource code.

Download

You can add picocli as an external dependency to your project, or you can include it as source.See thesource code. Copy and paste it into a file calledCommandLine.java, add it to your project, and enjoy!

Gradle

implementation 'info.picocli:picocli:4.7.6'

Maven

<dependency>  <groupId>info.picocli</groupId>  <artifactId>picocli</artifactId>  <version>4.7.6</version></dependency>

Scala SBT

libraryDependencies += "info.picocli" % "picocli" % "4.7.6"

Ivy

<dependency org="info.picocli" name="picocli" rev="4.7.6" />

Grape

@Grapes(    @Grab(group='info.picocli',module='picocli',version='4.7.6'))

Leiningen

[info.picocli/picocli "4.7.6"]

Buildr

'info.picocli:picocli:jar:4.7.6'

JBang

//DEPS info.picocli:picocli:4.7.6

About

Picocli is a modern framework for building powerful, user-friendly, GraalVM-enabled command line apps with ease. It supports colors, autocompletion, subcommands, and more. In 1 source file so apps can include as source & avoid adding a dependency. Written in Java, usable from Groovy, Kotlin, Scala, etc.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp