picocli - 強力な小さなコマンドラインインターフェース
Picocli は、JVM 上でも JVM 上でも実行できる豊富なコマンド ライン アプリケーションを作成するための最も使いやすい方法を目指しています。ピコクリを検討していますか? picocli について満足しているユーザーの意見をチェックしてください。
Picocli は、Java で書かれた最新のライブラリおよびフレームワークであり、注釈 API とプログラム API の両方が含まれています。 ANSI 色とスタイル、TAB オートコンプリート、ネストされたサブコマンドに関する使用方法のヘルプが特徴です。単一のファイルなので、ソース形式に含めることができます。これにより、ユーザーは外部依存関係として picocli を必要とせずに picocli ベースのアプリケーションを実行できるようになります。
Picocli ベースのアプリケーションは、起動時間が非常に速く、メモリ要件が低いネイティブ イメージに事前にコンパイルでき、単一の実行可能ファイルとして配布できます。 Picocli には、コンパイル中に jar を自動的に Graal 有効にするアノテーション プロセッサが付属しています。
Picocli アプリケーションは、定型コードがなく非常にコンパクトにできます。コマンド (またはサブコマンド) は 1 行のコードで実行できます。 Runnable
またはCallable
を実装するか、コマンドのビジネス ロジックを@Command
アノテーション付きメソッドに配置するだけです。
Picocli を使用すると、コマンド ライン インターフェイスのガイドラインに簡単に従うことができます。
仕組み: クラスにアノテーションを付けると、picocli がコマンド ライン引数からクラスを初期化し、入力を厳密に型指定されたデータに変換します。 git のようなサブコマンド (およびネストされたサブサブコマンド)、任意のオプション プレフィックス スタイル、POSIX スタイルのグループ化された短いオプション、カスタム タイプ コンバータ、パスワード オプションなどをサポートします。
Picocli は、名前付きオプションと位置パラメーターを区別し、両方を厳密に型指定できるようにします。複数値フィールドでは、パラメーターの正確な数または範囲 (例: 0..*
、 1..2
) を指定できます。 -Dkey1=val1 -Dkey2=val2
のようなマップ オプションをサポートし、キーと値の両方を厳密に型指定できます。パーサーのトレースにより、トラブルシューティングが容易になります。コマンド ライン引数ファイル (@ ファイル) を使用すると、アプリケーションは非常に長いコマンド ラインを処理できます。
可能な限り ANSI カラーを使用して、洗練された簡単に調整できる使用法ヘルプとバージョン ヘルプを生成します。少なくとも Java 5 が必要ですが、Java 8 ラムダの使用を容易にするように設計されています。 5 ~ 18-ea (両端を含む) のすべての Java バージョンでテスト済み。
Picocli ベースのコマンド ライン アプリケーションでは、TAB オートコンプリートを使用して、使用可能なオプションとサブコマンドを対話的にユーザーに表示できます。オプションにcompletionCandidates
またはenum
型がある場合、オートコンプリートはオプション値を提案することもできます。 Picocli は bash および zsh の補完スクリプトを生成でき、対話型シェル アプリケーションを構築するための JLine Completer
実装を備えたpicocli-shell-jline2
およびpicocli-shell-jline3
モジュールを提供します。
picocli の独自の機能には、否定可能なオプション、高度な引用符で囲まれた値、および引数グループのサポートが含まれます。引数グループを使用すると、相互に排他的なオプション、相互に依存するオプション、使用法ヘルプ メッセージ内のオプション セクション、および([-a=<a> -b=<b> -c=<c>] (-x | -y | -z))...
。高度なユースケースでは、アプリケーションは@Spec
アノテーションを使用して picocli コマンド オブジェクト モデルにアクセスし、組み込みロジックが不十分な場合はオプション パラメーターのカスタム パラメーター処理を実装できます。
Picocli ベースのアプリケーションは、Dependency Injection コンテナーと簡単に統合できます。 Micronaut マイクロサービス フレームワークには、picocli のサポートが組み込まれています。 Quarkus には、Quarkus での picocli ベースの CLI アプリケーションの作成を容易にするための、Picocli 拡張機能を備えたコマンド モードがあります。 Picocli には、picocli コマンド ライン アプリケーションで Spring 依存関係注入を使用するためのPicocliSpringFactory
と Spring Boot 自動構成を含むpicocli-spring-boot-starter
モジュールが付属しています。ユーザーマニュアルには、Guice、Spring Boot、Micronaut、Quarkus、および CDI 2.0 仕様 (JSR 365) に準拠したコンテナーとの統合の例が記載されています。
リリース
- すべてのリリース
- 最新: 4.7.6 リリースノート
- 旧: Picocli 4.0 リリースノート
- 旧: Picocli 3.0 リリースノート
- 旧: Picocli 2.0 リリースノート
ドキュメント
- 4.x ユーザーマニュアル: https://picocli.info
- 4.x クイックガイド
- 4.x API Javadoc
- プレビュー: すべてのアーティファクトのモジュール式 Javadoc (4.7.6-SNAPSHOT)
- コマンドラインのオートコンプリート
- プログラマティック API
- よくある質問
- GraalVM AOT のネイティブ イメージへのコンパイル
古い
3.x ユーザーマニュアル3.x クイックガイド3.x API Javadoc 2.x ユーザーマニュアル2.x API Javadoc 1.x ユーザーマニュアル
記事とプレゼンテーション
英語
- JBang ではできるが Shell ではできない 6 つのこと (2022-02-28) F.Marchioni 著。
- [ビデオ]Kotlin、CLI、StarWars! - Picocli を使用した Kotlin による CLI アプリケーションの作成の概要 (2022-02-05)、Julien Lengrand-Lambert 著。
- [ビデオ]Picocli を使用した Java CLI のオートコンプリート (2022-01-24) by raksrahul。
- Picocli – Java での CLI 引数の容易さ (2021-10-27) by agamboa.
- picoCLI を使用した Kotlin でのコマンド ライン インターフェイスの構築 (2021-09-23)、Julien Lengrand-Lambert 著。
- [ビデオ] picocli を使用して Java CLI アプリケーションを作成する (2021-09-14) by coder4life。
- PICOCLI (2021-06-30) by Sybren Boland。
- ピコクリ | GraalVM を使用して最初の Kotlin /JVM CLI アプリケーションを作成します (2021-02-13、manserpatrice 著)。
- [ビデオ] Quarkus、picocli、fabric8io、jbang を使用した kubectl プラグインの構築 (2021-01-22)、Sébastien Blanc 著。
- [ビデオ] J-Fall Virtual 2020: Julien Lengrand - picoCLI を使用した CLI アプリケーション作成の概要 (2020-12-07)、Julien Lengrand-Lambert による。これは @nljug #jfall virtual 2020 で最高評価のトークでした!おめでとう、ジュリアン!
- Julien Lengrand-Lambert による picoCLI (2020-11-17) を使用したコマンド ライン アプリケーションでのページネーションの結果。
- Oleg Šelajev による GraalVM Native Image (2020-11-13) を使用した CLI アプリケーション。
- Picocli サブコマンド - 1 つのプログラムで多くの目的 (2020-09-22)、Jonas Andersen 著。
- Picocli と GraalVM を使用したネイティブ CLI (2020-08-20) by jbebar。
- jbang と picocli を使用して Java で CLI アプリを構築する方法 (2020-08-13)、Matthew Gilliard 著。
- Quarkus と Picocli を使用した GitHub 依存スクレイパーの構築 (2020-07-31)、Marc Nuri 著。
- Andreas Textor による適切な Java CLI の構築 (2020-07-27)。
- [ビデオ] (Szymon Stepniak によるもう 1 つの非常によく制作されたビデオ) Micronaut、Picocli、および GraalVM を使用した Java コマンドライン アプリでの OAuth 2.0 の実装 (2020-07-23)、Szymon Stepniak による (YouTube チャンネル)。
- Micronaut、Picocli、および GraalVM (2020-07-08)、Szymon Stepniak による。
- [ビデオ] (非常によく作成されており、有益です。お勧めします!) Java 11、Micronaut、Picocli、および GraalVM を使用したコマンドライン アプリの構築 (2020-07-01) by Szymon Stepniak (YouTube チャンネル)。
- [AUDIO] Scala Valentines #2 (2020-06-21) ポッドキャストでピコクリについて話します(18:11~)。
- Java を使用してコマンド ライン ツールを作成するにはどうすればよいですか? (2020-06-18) ビジェイ SRJ 著。
- Quarkus と Picocli を使用したコマンドライン ツール (2020-06-08、Dmytro Chaban 著)。
- Quarkus 1.5 (2020-06-03) に含まれる Michał Górniewski による picocli 拡張機能による、picocli を使用した Quarkus コマンド モードの Quarkus ガイド。
- Micronaut と GraalVM を使用したネイティブ イメージ (2020-06-01)、Λ: Olivier Revial による。
- Micronaut と Picocli を使用した CLI アプリケーション (2020-06-01)、Λ: Olivier Revial による。
- Picocli の紹介 - 最新の Java コマンドライン解析 (2020-05-19)、Jonas Andersen 著。
- Java、PicoCLI、GraalVM を使用したネイティブ Covid19 トラッカー CLI の構築 (2020-05-11)、Mohammed Aboullaite 著。
- Picocli を使用した Quarkus コマンド モード (2020 年 4 月 27 日)、Dmytro Chaban による。
- Scala、Picocli、GraalVM を使用した CLI ツールの作成 (2020-03-09) by 竹添直樹
- GraalVM、Picocli、Gradle を使用したネイティブ Java CLI の構築 (2020-03-08) Mitch Seymour 著
- Graalvm と Picocli を使用して Java で優れたネイティブ CLI アプリを構築する (2020-03-07)
- Philipp Hanslovsky による Picocli Structured Objects (2019-09-10) では、引数グループの繰り返しに対する picocli のサポートを使用して、コマンド ラインから構造化オブジェクトを追加または構成する方法について説明しています。
- Picocli|Baeldung を使用して Java コマンド ライン プログラムを作成する (2019-05-07、François Dupire 著)。
- picocli JAX Magazine の駆け足ツアー「Java ツールにスポットライトを当てる」 (2019-04-08)。
- PicoCLI の紹介 (2019-02-10) by devop。
- Corda CLI UX (ユーザー エクスペリエンス) ガイド (R3 Limited による 2018) には、役立つアドバイスが記載されています。
- Groovy スクリプトを使用した CLI ツールの開発 (2018-10-26、Chinthaka Dinadasa による)。
- Commons CLI から picocli への移行。後悔はしないでしょう! :-) (DZone および Java Code Geeks にもあります)。
- Groovy 2.5 CliBuilder のリニューアル (blogs.apache.org にもあります)。 2 部構成: パート 1 (DZone、Java Code Geeks にも掲載)、パート 2 (DZone、Java Code Geeks にも掲載)。
- picocli を使用してマイクロサービスをスタンドアロンで実行するための Micronaut ユーザー マニュアル。
- Java コマンドライン インターフェイス (パート 30): picocli 2.0.1 に関する Dustin Marx の観察 (DZone、Java Code Geeks にも掲載)
- Java コマンドライン インターフェイス (パート 10): picocli 0.9.7 に関する Dustin Marx による Picocli (DZone、Java Code Geeks にも掲載)
- Picocli 2.0: Groovy Scripts on Steroids (DZone、Java Code Geeks にもあります)
- Picocli 2.0: Do More With Less (DZone、Java Code Geeks にも掲載)
- picocli 1.0 を発表 (DZone にも)
€сский
- Выбор необходимых опций Picocli на основе основного варианта (2020-05-07)
- Интерфейсы командной строки Java: picocli (2018-08-06): Dustin Marx のブログ投稿の MaxRokatansky によるロシア語翻訳。
スペイン語
- ピコクリ、コマンドのアプリケーション作成のためのポデロソ フレームワーク (2023-09-09) by Darkcrizt
- ピコクリ、コマンドのアプリケーション作成のためのポデロソ フレームワーク (2023-09-09) by Darkcrizt
- Quarkus + Picocli: Marc Nuri による GitHub での追加プロジェクトの依存関係に関する Web スケーパー (2020-08-15)。
- Quarkus - 紹介: picocli (2020-06-15)、Gerardo Arroyo 著。
- [ビデオ] Picocli - Spring Boot の例 (2020-05-24) Gonzalo H. Mendoza による 7 分間の簡単な紹介。
フランセ
- アプリケーション モバイル: Créez de superbes Applications CLI Natives en Java avec Graalvm et Picocli (2020-05-07) bouf1450 による「Build Great Native CLI Apps in Java with Graalvm and Picocli」の翻訳。
- [ビデオ] Des application en ligne de commande avec Picocli et GraalVM (N. Peters) (2019-05-07): Devoxx FR 中の Nicolas Peters による 15 分間のプレゼンテーション。プレゼンテーションのスライドは GitHub で入手できます。
ポルトガル語
- Desenvolva は、Java com Graalvm e Picocli で CLI をネイティブに使用します (2020-08-28): Rodrigo Ap G Batista のおかげで、Graalvm と Picocli を使用して Java で優れたネイティブ CLI アプリを構築するのポルトガル語翻訳。
- [ビデオ] Quarkus #40: コマンド モード com Picocli (2020-06-23): Vinícius Ferraz (@viniciusfcf) による 13 分間のプレゼンテーション。
日本語
- GraalVM Native Image を使用した CLI アプリケーション (2020-11-21) Oleg Šelajev の投稿の Logico_jp による翻訳。
- Picocli + Kotlin + graalvm-native-image プラグインでネイティブツールを作る (2020-04-24) mike-neck (Twitter の引きこもり持田) によるブログ投稿。
- pythonのArgumentParserのような使い心地! picocliのご紹介 (2020-04-15) by @astamuseLab
- Javaのコマンドラインアプリケーション向けのフレームワーク、picocliで遊ぶ (2020-03-07) かずひらさんのブログ投稿。
- クロモジのCLIコマンドとpicocliとGraalVM (2020-02-28) @johtani によるブログ投稿。
- GraalVM、PicocliとJavaでときめくネイティブコマンドラインアプリを作ろう (2019-11-23) 日本JavaユーザーグループのJJUG CCC 2019秋カンファレンスでの私のプレゼンテーションのスライド。
- Picocli を使用して Java コマンドラインプログラムを作成する - 開発者ドキュメント (2019-10-18)
- GraalVMとPicocliでJavaのネイティブコマンドラインアプリを作ろう (2019-09-06) 【東京】JJUGナイトセミナー:ビール片手にLT大会 9/6(金)でのライトニングトークプレゼンテーション用スライド
- Picocli+Spring Bootでコマンドラインアプリケーションを作成してみる (2019-07-20) by かんがるーさんの日記。
- GraalVMのネイティブイメージを使ってJavaで爆速Lambdaの夢を見る (2019-05-02) by @kencharos
中国語
- Java コマンド行界面(第 10 部):picocli (2020-06-07) dnc8371 による翻訳。
- Graalvm と Picocli による方法による Java 编写的原生 CLI 应用 (2020-03-26): 张卫滨のおかげで、Graalvm と Picocli を使用して Java で優れたネイティブ CLI アプリを構築するの中国語翻訳。
- 从Commons CLIからPicocliへ移行 (2019-03-13): genghaihua のおかげで、Commons CLI から picocli への移行の中国語翻訳。
- Picocli 2.0: ステロイド上の Groovy スクリプト
- Picocli 2.0: 少なくとも要求多
メーリングリスト
picocli 関連のことについて話し合ったり、新しいリリースのお知らせを受け取りたい場合は、picocli Google グループに参加してください。
クレジット
Realinfo が picocli のロゴをデザインしました!ありがとうございました!
約束
このプロジェクトはセマンティック バージョニングに従い、ゼロ バグ コミットメントに準拠しています。 |
---|
採択
- Picocli は Groovy の一部になりました。 Groovy 2.5 以降、すべての Groovy コマンド ライン ツールは picocli ベースであり、picocli は Groovy の CliBuilder DSL の基礎となるパーサーです。
- Picocli は現在 Micronaut の一員です。 Micronaut CLI は picocli で書き直されており、Micronaut は picocli を使用してマイクロサービスをスタンドアロンで実行するための専用のサポートを備えています。マイクロノート ピコクリ ガイドも参照してください。
- Quarkus は、picocli でコマンド モードを提供するようになりました。
- Picocli は JUnit 5 の一部になりました。JUnit 5.3 では @-file (引数ファイル) をサポートするために
ConsoleLauncher
jopt-simple から picocli に移行しました。これは、コマンドラインで多くのテストを指定する必要があり、システムの制限に遭遇する必要があるユーザーに役立ちます。 - Debian は libpicocli-java パッケージを提供するようになりました。ミロスラフ・クラヴェックに感謝します。
- Picocli は、Intuit Karate スタンドアロン JAR/実行可能ファイルで使用されます。
- ピコクリはバレリーナの一員です。 Ballerina は、すべてのコマンド ライン ユーティリティに picocli を使用します。
- Picocli は、CheckStyle 8.15 からの CheckStyle スタンドアロン JAR / 実行可能ファイルで使用されます。
- Picocli は、OpenJDK ビルドに対して積極的にテストを行う Free Open Source Software (FOSS) プロジェクトの OpenJDK Quality Outreach リストに含まれています。
- Picocli は、Apache Hadoop Ozone/HDDS コマンド ライン ツール、Apache Hive ベンチマーク CLI、Apache Ignite TensorFlow、および Apache Sling Feature Model Converter で使用されます。
- Picocli は StackShare に上場されています。これをスタックに追加し、picocli が好きな理由を追加/賛成票を投じてください。
- Pinterest ktlint では Picocli が使用されています。
- Picocli は Spring IO nohttp-cli で使用されます。
- MinecraftPicocli ライブラリは、Minecraft Forge での picocli の使用を容易にします。
- Simple Java Mail は picocli ベースの CLI を提供するようになりました。
- jbang は内部で picocli を使用するだけでなく、初期スクリプトを生成するための CLI テンプレートも備えています。jbang
jbang --init=cli helloworld.java
を使用してサンプルの picocli 対応 jbang スクリプトを生成します。 「アスキーネマ」を参照。 - Picocli は、Java で GraalVM ネイティブ CLI 実行可能ファイルを構築するための CookieTemple cli-java テンプレートで使用されるメイン ライブラリです。このプレビューをご覧ください。
- Picocli については、コマンド ライン インターフェイスのガイドラインに記載されています。
picocliを利用する人が増えて嬉しいです。私たちは何か正しいことをしているに違いありません。 :-)
picocli の宣伝に協力して貢献する
picocli が好きなら、他の人が picocli を発見できるように手伝ってください。
簡単でインパクト大?
- GitHub で picocli にスターを付けましょう!
- 「Java でコマンド ライン引数を解析するにはどうすればよいですか?」に対する StackOverflow の回答に賛成票を投じてください。
- 「Java でコマンドライン引数を解析する最良の方法は何ですか?」に対する私の Quora の回答に賛成票を投じてください。
喜びを広げてください! ?
- ピコクリについてツイートします!何が気に入っていますか?それはどのように役に立ちましたか?代替品との違いは何ですか?
- プロジェクトのドキュメントで、プロジェクトが picocli を使用していることを明記してください。
- README.md に次のバッジを付けて、GitHub プロジェクトが picocli を使用していることを示します。
[![picocli](https://img.shields.io/badge/picocli-4.7.6-green.svg)](https://github.com/remkop/picocli)
説教してください! ?
- おそらく、picocli がどのように生活を楽にするかを人々に示す最も影響力のある方法は、ブログ投稿や記事を書くこと、さらにはビデオを作成することです。
例
フィールドにコマンド ライン パラメーターの名前と説明を注釈として付けます。オプションで、 Runnable
またはCallable
実装して、エラー処理と使用法ヘルプまたはバージョン ヘルプのリクエストを picocli に委任します。例えば:
import picocli . CommandLine ;
import picocli . CommandLine . Option ;
import picocli . CommandLine . Parameters ;
import java . io . File ;
@ Command ( name = "example" , mixinStandardHelpOptions = true , version = "Picocli example 4.0" )
public class Example implements Runnable {
@ Option ( names = { "-v" , "--verbose" },
description = "Verbose mode. Helpful for troubleshooting. Multiple -v options increase the verbosity." )
private boolean [] verbose = new boolean [ 0 ];
@ Parameters ( arity = "1..*" , paramLabel = "FILE" , description = "File(s) to process." )
private File [] inputFiles ;
public void run () {
if ( verbose . length > 0 ) {
System . out . println ( inputFiles . length + " files to process..." );
}
if ( verbose . length > 1 ) {
for ( File f : inputFiles ) {
System . out . println ( f . getAbsolutePath ());
}
}
}
public static void main ( 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.
int exitCode = new CommandLine ( new Example ()). execute ( args );
System . exit ( exitCode );
}
}
Runnable
またはCallable
を実装すると、コマンドを 1 行のコードで実行できます。上記の例では、 CommandLine.execute
メソッドを使用してコマンド ラインを解析し、エラーを処理し、使用方法とバージョン ヘルプの要求を処理し、ビジネス ロジックを呼び出します。アプリケーションは、返された終了コードを使用してSystem.exit
を呼び出し、成功または失敗を呼び出し元に通知できます。
$ java Example -v inputFile1 inputFile2
2 files to process...
CommandLine.execute
メソッドは、ユーザーがヘルプを要求した場合、または入力が無効だった場合に、使用方法のヘルプ メッセージを自動的に出力します。
これはさまざまな方法でカスタマイズできます。詳細については、ユーザーマニュアルの「コマンドの実行」セクションを参照してください。
ANSI の色とスタイルに関する使用法ヘルプ
色、スタイル、ヘッダー、フッター、セクション見出しは、注釈を使用して簡単にカスタマイズできます。例えば:
ソースコードを参照してください。
使い方ヘルプAPI
Picocli アノテーションは、使用方法のヘルプ メッセージをカスタマイズするさまざまな方法を提供します。
注釈だけでは不十分な場合は、picocli のヘルプ API を使用してさらにカスタマイズできます。たとえば、アプリケーションはカスタム レイアウトを使用して次のようなヘルプを生成できます。
ソースコードを参照してください。
ダウンロード
picocli を外部依存関係としてプロジェクトに追加することも、ソースとして含めることもできます。ソースコードを参照してください。これをコピーしてCommandLine.java
というファイルに貼り付け、プロジェクトに追加して楽しんでください。
グラドル
implementation 'info.picocli:picocli:4.7.6'
メイビン
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.7.6</version>
</dependency>
スカラSBT
libraryDependencies += "info.picocli" % "picocli" % "4.7.6"
アイビー
<dependency org="info.picocli" name="picocli" rev="4.7.6" />
グレープ
@Grapes (
@ Grab ( group = ' info.picocli ' , module = ' picocli ' , version = ' 4.7.6 ' )
)
ライニンゲン
[info.picocli/picocli "4.7.6"]
ビルダー
'info.picocli:picocli:jar:4.7.6'
ジェイバン
//DEPS info.picocli:picocli:4.7.6