picocli - antarmuka baris perintah kecil yang hebat
Picocli bertujuan untuk menjadi cara termudah digunakan untuk membuat aplikasi baris perintah kaya yang dapat berjalan di dalam dan di luar JVM. Mempertimbangkan picocli? Periksa apa yang dikatakan pengguna yang senang tentang picocli.
Picocli adalah perpustakaan dan kerangka kerja modern, ditulis dalam Java, yang berisi API anotasi dan API terprogram. Ini menampilkan bantuan penggunaan dengan warna dan gaya ANSI, pelengkapan otomatis TAB dan subperintah bersarang. Dalam satu file, sehingga Anda dapat memasukkannya dalam bentuk sumber . Hal ini memungkinkan pengguna menjalankan aplikasi berbasis picocli tanpa memerlukan picocli sebagai ketergantungan eksternal.
Aplikasi berbasis Picocli dapat dikompilasi terlebih dahulu ke gambar asli, dengan waktu startup yang sangat cepat dan kebutuhan memori yang lebih rendah, yang dapat didistribusikan sebagai satu file yang dapat dieksekusi. Picocli dilengkapi dengan pemroses anotasi yang secara otomatis mengaktifkan Graal jar Anda selama kompilasi.
Aplikasi Picocli bisa sangat ringkas tanpa kode boilerplate: perintah Anda (atau subperintah) dapat dijalankan dengan satu baris kode. Cukup implementasikan Runnable
atau Callable
, atau letakkan logika bisnis dari perintah Anda dalam metode @Command
- beranotasi.
Picocli memudahkan untuk mengikuti Pedoman Antarmuka Baris Perintah.
Cara kerjanya: beri anotasi pada kelas Anda dan picocli menginisialisasinya dari argumen baris perintah, mengubah input menjadi data yang diketik dengan kuat. Mendukung sub-perintah seperti git (dan sub-sub-perintah bersarang), gaya awalan opsi apa pun, opsi pendek yang dikelompokkan gaya POSIX, konverter tipe khusus, opsi kata sandi, dan banyak lagi.
Picocli membedakan antara opsi bernama dan parameter posisi dan memungkinkan keduanya diketik dengan kuat. Bidang multinilai dapat menentukan jumlah parameter atau rentang yang tepat (misalnya, 0..*
, 1..2
). Mendukung opsi Peta seperti -Dkey1=val1 -Dkey2=val2
, di mana kunci dan nilai dapat diketik dengan kuat. Pelacakan parser memfasilitasi pemecahan masalah. File argumen baris perintah (@-files) memungkinkan aplikasi menangani baris perintah yang sangat panjang.
Menghasilkan bantuan penggunaan dan bantuan versi yang halus dan mudah disesuaikan, menggunakan warna ANSI jika memungkinkan. Memerlukan minimal Java 5, tetapi dirancang untuk memfasilitasi penggunaan lambda Java 8. Diuji pada semua versi Java antara 5 dan 18-ea (inklusif).
Aplikasi baris perintah berbasis Picocli dapat memiliki pelengkapan otomatis TAB, yang secara interaktif menunjukkan kepada pengguna opsi dan subperintah apa yang tersedia. Ketika suatu opsi memiliki completionCandidates
atau memiliki tipe enum
, pelengkapan otomatis juga dapat menyarankan nilai opsi. Picocli dapat menghasilkan skrip penyelesaian untuk bash dan zsh, dan menawarkan modul picocli-shell-jline2
dan picocli-shell-jline3
dengan implementasi JLine Completer
untuk membangun aplikasi shell interaktif.
Fitur unik di picocli mencakup dukungan untuk opsi yang dapat dinegasikan, nilai kutipan tingkat lanjut, dan grup argumen. Grup argumen dapat digunakan untuk membuat opsi yang saling eksklusif, opsi yang saling bergantung, bagian opsi dalam pesan bantuan penggunaan, dan argumen gabungan yang berulang seperti ([-a=<a> -b=<b> -c=<c>] (-x | -y | -z))...
. Untuk kasus penggunaan tingkat lanjut, aplikasi dapat mengakses model objek perintah picocli dengan anotasi @Spec
, dan menerapkan pemrosesan parameter khusus untuk parameter opsi jika logika bawaan tidak mencukupi.
Aplikasi berbasis Picocli dapat dengan mudah diintegrasikan dengan container Dependency Injection. Kerangka kerja layanan mikro Micronaut memiliki dukungan bawaan untuk picocli. Quarkus memiliki Mode Perintah dengan ekstensi Picocli untuk memfasilitasi pembuatan aplikasi CLI berbasis picocli dengan Quarkus. Picocli dikirimkan dengan modul picocli-spring-boot-starter
yang mencakup konfigurasi otomatis PicocliSpringFactory
dan Spring Boot untuk menggunakan injeksi ketergantungan Spring di aplikasi baris perintah picocli Anda. Panduan pengguna berisi contoh integrasi dengan Guice, Spring Boot, Micronaut, Quarkus, dan container yang memenuhi spesifikasi CDI 2.0 (JSR 365).
Rilis
- Semua Rilis
- Terbaru: 4.7.6 Catatan Rilis
- Lebih Lama: Catatan Rilis Picocli 4.0
- Lebih Lama: Catatan Rilis Picocli 3.0
- Lebih Lama: Catatan Rilis Picocli 2.0
Dokumentasi
- 4.x Panduan pengguna: https://picocli.info
- 4.x Panduan Cepat
- 4.x API Javadoc
- PRATINJAU: Javadoc modular untuk semua artefak (4.7.6-SNAPSHOT)
- Pelengkapan otomatis baris perintah
- API terprogram
- Pertanyaan Umum
- Kompilasi GraalVM AOT ke Gambar Asli
Lebih tua
3.x Panduan pengguna 3.x Panduan Cepat 3.x API Javadoc 2.x Panduan pengguna 2.x API Javadoc 1.x Panduan pengguna
Artikel & Presentasi
Bahasa inggris
- 6 hal yang dapat Anda lakukan dengan JBang tetapi tidak bisa dengan Shell (28-02-2022) oleh F.Marchioni.
- [VIDEO]Kotlin, CLI, dan StarWars! - Pengenalan cara membuat aplikasi CLI dengan Kotlin menggunakan Picocli (05-02-2022) oleh Julien Legrand-Lambert.
- [VIDEO]Pelengkapan otomatis Java CLI menggunakan Picocli (24-01-2022) oleh raksrahul.
- Picocli – Kemudahan argumen CLI di Java (27-10-2021) oleh agamboa.
- Membangun Antarmuka Baris Perintah dengan Kotlin menggunakan picoCLI (23-09-2021) oleh Julien Legrand-Lambert.
- [VIDEO]Buat aplikasi Java CLI dengan picocli (14-09-2021) oleh coder4life.
- PICOCLI (30-06-2021) oleh Sybren Boland.
- picokli | Buat aplikasi Kotlin /JVM CLI pertama Anda dengan GraalVM (13-02-2021) oleh manserpatrice.
- [VIDEO] Membuat plugin kubectl dengan Quarkus, picocli, fabric8io, dan jbang (22-01-2021) oleh Sébastien Blanc.
- [VIDEO] J-Fall Virtual 2020: Julien Legrand - Pengenalan pembuatan aplikasi CLI menggunakan picoCLI (07-12-2020) oleh Julien Legrand-Lambert. Ini adalah pembicaraan dengan peringkat teratas untuk @nljug #jfall virtual 2020! Selamat, Julien!
- Hasil paginasi dalam aplikasi baris perintah menggunakan picoCLI (17-11-2020) oleh Julien Legrand-Lambert.
- Aplikasi CLI dengan GraalVM Native Image (2020-11-13) oleh Oleg Šelajev.
- Subperintah Picocli - Satu program, banyak tujuan (22-09-2020) oleh Jonas Andersen.
- CLI asli dengan Picocli dan GraalVM (20-08-2020) oleh jbebar.
- Cara membuat aplikasi CLI di Java menggunakan jbang dan picocli (13-08-2020) oleh Matthew Gilliard.
- Membangun Scraper Ketergantungan GitHub dengan Quarkus dan Picocli (31-07-2020) oleh Marc Nuri.
- Membangun Java CLI yang layak (27-07-2020) oleh Andreas Textor.
- [VIDEO] (Video lain yang diproduksi dengan sangat baik oleh Szymon Stepniak) Menerapkan OAuth 2.0 di aplikasi baris perintah Java menggunakan Micronaut, Picocli, dan GraalVM (23-07-2020) oleh Szymon Stepniak (saluran YouTube).
- Micronaut, Picocli, dan GraalVM (08-07-2020) oleh Szymon Stepniak.
- [VIDEO] (Diproduksi dengan sangat baik dan informatif, direkomendasikan!) Membangun aplikasi baris perintah dengan Java 11, Micronaut, Picocli, dan GraalVM (01-07-2020) oleh Szymon Stepniak (saluran YouTube).
- [AUDIO] Scala Valentines #2 (21-06-2020) Podcast berbicara tentang picocli (mulai 18:11).
- Bagaimana cara membuat alat baris perintah menggunakan Java? (18-06-2020) oleh Vijay SRJ.
- Alat baris perintah dengan Quarkus dan Picocli (08-06-2020) oleh Dmytro Chaban.
- Panduan Quarkus untuk mode perintah Quarkus dengan picocli, berkat ekstensi picocli oleh Michał Górniewski yang disertakan dalam Quarkus 1.5 (03-06-2020).
- Gambar asli dengan Micronaut dan GraalVM (01-06-2020) oleh Λ: Olivier Revial.
- Aplikasi CLI dengan Micronaut dan Picocli (01-06-2020) oleh Λ: Olivier Revial.
- Pengenalan Picocli - Penguraian baris perintah Java modern (19-05-2020) oleh Jonas Andersen.
- Membangun CLI Pelacak Covid19 Asli menggunakan Java, PicoCLI & GraalVM (11-05-2020) oleh Mohammed Aboullaite.
- Mode Perintah Quarkus dengan Picocli (27-04-2020) oleh Dmytro Chaban.
- Membuat alat CLI dengan Scala, Picocli, dan GraalVM (09-03-2020) oleh Naoki Takezoe
- Membangun CLI Java asli dengan GraalVM, Picocli, dan Gradle (08-03-2020) oleh Mitch Seymour
- Membangun Aplikasi CLI Asli yang Hebat di Java dengan Graalvm dan Picocli (07-03-2020)
- Objek Terstruktur Picocli (2019-09-10) oleh Philipp Hanslovsky menjelaskan cara menggunakan dukungan picocli untuk mengulangi grup argumen guna menambahkan atau mengonfigurasi objek terstruktur dari baris perintah.
- Membuat Program Baris Perintah Java dengan Picocli|Baeldung (07-05-2019) oleh François Dupire.
- Tur angin puyuh dari picocli JAX Magazine "Menyoroti alat Java" (08-04-2019).
- Pengantar PicoCLI (10-02-2019) oleh devop.
- Panduan Corda CLI UX (Pengalaman Pengguna) (2018 oleh R3 Limited) memberikan saran yang berguna.
- Mengembangkan alat CLI menggunakan skrip asyik (26-10-2018) oleh Chinthaka Dinadasa.
- Bermigrasi dari Commons CLI ke picocli. Anda tidak akan menyesalinya! :-) (juga di: DZone dan Java Code Geeks).
- Pembaruan CliBuilder Groovy 2.5 (juga di blogs.apache.org). Dalam dua bagian: Bagian 1 (juga di: DZone, Java Code Geeks), Bagian 2 (juga di: DZone, Java Code Geeks).
- Panduan pengguna Micronaut untuk menjalankan layanan mikro mandiri dengan picocli.
- Antarmuka Baris Perintah Java (Bagian 30): Pengamatan oleh Dustin Marx tentang picocli 2.0.1 (juga di: DZone, Java Code Geeks)
- Antarmuka Baris Perintah Java (Bagian 10): Picocli oleh Dustin Marx tentang picocli 0.9.7 (juga di: DZone, Java Code Geeks)
- Picocli 2.0: Skrip Groovy pada Steroid (juga di: DZone, Java Code Geeks)
- Picocli 2.0: Lakukan Lebih Banyak Dengan Lebih Sedikit (juga di: DZone, Java Code Geeks)
- Mengumumkan picocli 1.0 (juga di: DZone)
русский
- Выбор необходимых опций Picocli на основе основного варианта (2020-05-07)
- Интерфейсы командной строки Java: picocli (2018-08-06): Terjemahan bahasa Rusia oleh MaxRokatansky dari postingan blog Dustin Marx.
Spanyol
- picocli, kerangka kerja yang dapat digunakan untuk pembuatan aplikasi baris perintah (2023-09-09) oleh Darkcrizt
- picocli, kerangka kerja yang dapat digunakan untuk pembuatan aplikasi baris perintah (2023-09-09) oleh Darkcrizt
- Quarkus + Picocli: Web scaper untuk proyek tambahan yang bergantung pada GitHub (15-08-2020) oleh Marc Nuri.
- Quarkus - Pengenalan: picocli (2020-06-15) oleh Gerardo Arroyo.
- [VIDEO] Picocli - Contoh Spring Boot (24-05-2020) Pengenalan singkat 7 menit oleh Gonzalo H. Mendoza.
Perancis
- Aplikasi seluler: Créez de superbes application CLI natives en Java avec Graalvm et Picocli (2020-05-07) Terjemahan dari Build Great Native CLI Apps di Java dengan Graalvm dan Picocli oleh bouf1450.
- [VIDEO] Des application en ligne de commande avec Picocli et GraalVM (N. Peters) (07-05-2019): presentasi 15 menit oleh Nicolas Peters selama Devoxx FR. Slide presentasi tersedia di GitHub.
Portugis
- Desenvolva aplicações CLI nativas em Java com Graalvm dan Picocli (28-08-2020): Terjemahan bahasa Portugis dari Membangun Aplikasi CLI Asli yang Hebat di Java dengan Graalvm dan Picocli, terima kasih kepada Rodrigo Ap G Batista.
- [VIDEO] Quarkus #40: Command Mode com Picocli (23-06-2020): Presentasi 13 menit oleh Vinícius Ferraz (@viniciusfcf).
日本語
- Aplikasi CLI dengan GraalVM Native Image (21-11-2020) yang diterjemahkan oleh Logico_jp dari postingan Oleg Šelajev.
- Picocli + Kotlin + plugin graalvm-native-image でネイティブツールを作る (24-04-2020) postingan blog oleh mike-neck (引きこもり持田 di Twitter).
- pythonのArgumentParserような使い心地!picocliのご紹介 (2020-04-15) oleh @astamuseLab
- Entri blog Javaのコマンドラインアプリケーション向けのフレームワーク、picocliで遊ぶ (2020-03-07) olehかずひら.
- KuromojiのCLIコマンドとpicocliとGraalVM (28-02-2020) postingan blog oleh @johtani.
- GraalVM, PicocliとJavaでときめくネイティブコマンドラインアプリを作ろう (23-11-2019) Slide untuk presentasi saya di JJUG CCC Grup Pengguna Java Jepang Konferensi Musim Gugur 2019.
- Picocliを使用してJavaコマンドラインプログラムを作成する - 開発者ドキュメント (2019-10-18)
- GraalVM と Picocliで Javaのネイティブコマンドラインアプリを作ろう (2019-09-06) Slide untuk presentasi pembicaraan kilat saya di 【東京】JJUG Tanggal: 6/9(金)
- Picocli+Spring Boot でコマンドラインアプリケーションを作成してみる (20-07-2019) olehかんがるーさんの日記.
- GraalVM の gambar asli を使って Java で爆速 Lambda の夢を見る (2019-05-02) oleh @kencharos
tidak
- Terjemahan Java命令行界面(第10部分):picocli (07-06-2020) oleh dnc8371.
- 如何借助 Graalvm 和 Picocli 构建 Java 编写的原生 CLI 应用 (26-03-2020): Terjemahan bahasa Mandarin untuk Membangun Aplikasi CLI Asli yang Hebat di Java dengan Graalvm dan Picocli, berkat 张卫滨.
- 从Commons CLI迁移到Picocli (2019-03-13): Terjemahan bahasa Mandarin dari Migrasi dari Commons CLI ke picocli, terima kasih kepada genghaihua.
- Picocli 2.0: Steroid上的Groovy脚本
- Picocli 2.0: 以少求多
milis
Bergabunglah dengan grup Google picocli jika Anda tertarik untuk mendiskusikan apa pun yang berhubungan dengan picocli dan menerima pengumuman tentang rilis baru.
Kredit
Reallinfo merancang logo picocli! Terima kasih banyak!
Komitmen
Proyek ini mengikuti pembuatan versi semantik dan mematuhi Komitmen Nol Bugs . |
---|
Adopsi
- Picocli sekarang menjadi bagian dari Groovy. Dari Groovy 2.5, semua alat baris perintah Groovy berbasis picocli, dan picocli adalah parser yang mendasari CliBuilder DSL Groovy.
- Picocli sekarang menjadi bagian dari Micronaut. Micronaut CLI telah ditulis ulang dengan picocli, dan Micronaut telah mendedikasikan dukungan untuk menjalankan layanan mikro mandiri dengan picocli. Lihat juga Panduan Micronaut Picocli.
- Quarkus sekarang menawarkan mode Perintah dengan picocli.
- Picocli sekarang menjadi bagian dari JUnit 5. JUnit 5.3 memigrasikan
ConsoleLauncher
dari jopt-simple ke picocli untuk mendukung @-files (file argumen); ini membantu pengguna yang perlu menentukan banyak pengujian pada baris perintah dan mengalami keterbatasan sistem. - Debian sekarang menawarkan paket libpicocli-java. Terima kasih kepada Miroslav Kravec.
- Picocli digunakan dalam JAR mandiri Intuit Karate / yang dapat dieksekusi.
- Picocli adalah bagian dari Balerina. Ballerina menggunakan picocli untuk semua utilitas baris perintahnya.
- Picocli digunakan dalam JAR mandiri CheckStyle / dapat dieksekusi dari Checkstyle 8.15.
- Picocli termasuk dalam daftar Penjangkauan Kualitas OpenJDK dari proyek Perangkat Lunak Sumber Terbuka Gratis (FOSS) yang secara aktif menguji build OpenJDK.
- Picocli digunakan dalam alat baris perintah Apache Hadoop Ozone/HDDS, CLI benchmark Apache Hive, Apache Ignite TensorFlow, dan Apache Sling Feature Model Converter.
- Picocli terdaftar di StackShare. Silakan tambahkan ke tumpukan Anda dan tambahkan/pilih alasan mengapa Anda menyukai picocli!
- Picocli digunakan di Pinterest ktlint.
- Picocli digunakan di Spring IO nohttp-cli.
- Pustaka MinecraftPicocli memfasilitasi penggunaan picocli di Minecraft Forge.
- Simple Java Mail sekarang menawarkan CLI berbasis picocli.
- jbang tidak hanya menggunakan picocli secara internal, tetapi juga memiliki template CLI untuk menghasilkan skrip awal: gunakan
jbang --init=cli helloworld.java
untuk menghasilkan contoh skrip jbang yang mendukung picocli. Lihat asciinema. - Picocli adalah perpustakaan utama yang digunakan dalam template cli-java CookieTemple untuk membuat executable CLI asli GraalVM di Java. Lihat pratinjau ini.
- Picocli disebutkan dalam Pedoman Antarmuka Baris Perintah.
Senang melihat lebih banyak orang menggunakan picocli. Kita harus melakukan sesuatu dengan benar. :-)
Berkontribusi dengan membantu mempromosikan picocli
Jika Anda menyukai picocli, bantu orang lain menemukan picocli:
Mudah dan berdampak?
- Berikan picocli bintang di GitHub!
- Beri suara positif pada jawaban StackOverflow saya ke "Bagaimana cara mengurai argumen baris perintah di Java?"
- Beri suara positif pada jawaban Quora saya pada "Apa cara terbaik untuk mengurai argumen baris perintah dengan Java?"
Sebarkan kegembiraan! ?
- Tweet tentang picocli! Apa yang kamu sukai darinya? Bagaimana hal ini membantu Anda? Apa bedanya dengan alternatif lain?
- Sebutkan bahwa proyek Anda menggunakan picocli dalam dokumentasi proyek Anda.
- Tunjukkan bahwa proyek GitHub Anda menggunakan picocli, dengan lencana ini di README.md Anda:
[![picocli](https://img.shields.io/badge/picocli-4.7.6-green.svg)](https://github.com/remkop/picocli)
Beritakanlah itu! ?
- Mungkin cara yang paling berdampak untuk menunjukkan kepada orang-orang bagaimana picocli dapat membuat hidup mereka lebih mudah adalah dengan menulis postingan blog atau artikel, atau bahkan membuat video!
Contoh
Beri anotasi pada bidang dengan nama dan deskripsi parameter baris perintah. Secara opsional, terapkan Runnable
atau Callable
untuk mendelegasikan penanganan kesalahan dan permintaan bantuan penggunaan atau bantuan versi ke picocli. Misalnya:
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 );
}
}
Implementasikan Runnable
atau Callable
, dan perintah Anda dapat dijalankan dalam satu baris kode. Contoh di atas menggunakan metode CommandLine.execute
untuk mengurai baris perintah, menangani kesalahan, menangani permintaan penggunaan dan bantuan versi, serta menjalankan logika bisnis. Aplikasi dapat memanggil System.exit
dengan kode keluar yang dikembalikan untuk memberi sinyal berhasil atau gagal kepada pemanggilnya.
$ java Example -v inputFile1 inputFile2
2 files to process...
Metode CommandLine.execute
secara otomatis mencetak pesan bantuan penggunaan jika pengguna meminta bantuan atau ketika input tidak valid.
Ini dapat disesuaikan dengan banyak cara. Lihat bagian panduan pengguna tentang Menjalankan Perintah untuk detailnya.
Bantuan Penggunaan dengan Warna dan Gaya ANSI
Warna, gaya, header, footer, dan judul bagian mudah disesuaikan dengan anotasi. Misalnya:
Lihat kode sumbernya.
API Bantuan Penggunaan
Anotasi Picocli menawarkan banyak cara untuk menyesuaikan pesan bantuan penggunaan.
Jika anotasi tidak mencukupi, Anda dapat menggunakan API Bantuan picocli untuk menyesuaikan lebih lanjut. Misalnya, aplikasi Anda dapat menghasilkan bantuan seperti ini dengan tata letak khusus:
Lihat kode sumbernya.
Unduh
Anda dapat menambahkan picocli sebagai ketergantungan eksternal pada proyek Anda, atau Anda dapat memasukkannya sebagai sumber. Lihat kode sumbernya. Salin dan tempel ke file bernama CommandLine.java
, tambahkan ke proyek Anda, dan nikmatilah!
Gradle
implementation 'info.picocli:picocli:4.7.6'
Maven
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.7.6</version>
</dependency>
Skala SBT
libraryDependencies += "info.picocli" % "picocli" % "4.7.6"
ivy
<dependency org="info.picocli" name="picocli" rev="4.7.6" />
Anggur
@Grapes (
@ Grab ( group = ' info.picocli ' , module = ' picocli ' , version = ' 4.7.6 ' )
)
Leiningen
[info.picocli/picocli "4.7.6"]
Pembangun
'info.picocli:picocli:jar:4.7.6'
JBang
//DEPS info.picocli:picocli:4.7.6