Rumah >Java >javaTutorial >JeKa: Cara Paling Mudah untuk Menerbitkan di Maven Central
JeKa ialah alat binaan Java moden yang memfokuskan pada kesederhanaan.
Siaran ini menunjukkan cara untuk menerbitkan ke Maven Central dengan konfigurasi minimum.
Prasyarat: Anda memerlukan akaun OSSRH untuk diterbitkan di Maven Central.
Dengan JeKa, anda boleh mengkonfigurasi binaan sepenuhnya dengan mengedit fail jeka.properties seperti berikut:
jeka.version=0.11.11 jeka.java.version=17 jeka.inject.classpath=dev.jeka:nexus-plugin @nexus= @project.moduleId=com.github.djeang:vincer-dom @project.gitVersioning.enable=true # Configuration for deploying to Maven central @maven.publication.predefinedRepo=OSSRH @maven.publication.metadata.projectName=Vincer-Dom @maven.publication.metadata.projectDescription=Modern Dom manipulation library for Java @maven.publication.metadata.projectUrl=https://github.com/djeang/vincer-dom @maven.publication.metadata.projectScmUrl=https://github.com/djeang/vincer-dom.git @maven.publication.metadata.licenses=Apache License V2.0:https://www.apache.org/licenses/LICENSE-2.0.html @maven.publication.metadata.developers=djeang:djeangdev@yahoo.fr
Perhatikan bahawa kebergantungan disenaraikan dalam fail dependencies.txt khusus untuk mengekalkan pemisahan kebimbangan yang jelas.
Untuk menerbitkan ke Maven Central, laksanakan: jeka project:pack maven:publish.
Lihat contoh konkrit di sini.
Sekarang anda tahu cara melakukannya, mari terangkan cara ia berfungsi.
Untuk kemudahalihan dan kebolehulangan yang lebih baik, kami boleh mengisytiharkan kedua-dua versi Jeka dan Java yang diperlukan untuk membina. Kedua-dua versi akan dimuat turun secara automatik jika belum ada pada mesin hos.
ModulId yang diterbitkan ditentukan menggunakan sifat @project.moduleId.
Versi boleh dinyatakan secara eksplisit menggunakan sifat @project.version. Ambil perhatian bahawa sifat boleh ditetapkan dalam fail jeka.properties atau diluluskan sebagai hujah baris arahan: -D@project.version=1.0.1.
Sebaliknya, kami memilih untuk bergantung pada Git untuk membuat kesimpulan versi menggunakan: @project.gitVersioning.enable=true. Jika tiada teg pada komit semasa, versi akan ditetapkan kepada [cawangan]-SNAPSHOT; jika tidak, ia akan menjadi nama-tag.
@maven.publication.predefinedRepo=OSSRH mengarahkan Jeka untuk menerbitkan ke repositori OSSRH yang telah ditetapkan. Repositori ini dikonfigurasikan untuk menerbitkan ke repositori syot kilat OSSRH apabila versi berakhir dengan -SNAPSHOT dan sebaliknya ke repositori keluaran.
Repositori menggunakan pembolehubah persekitaran berikut untuk menghantar rahsia:
Kandungan jeka.gpg.secret-key boleh diperolehi dengan melaksanakan: gpg --export-secret-key --armor my-key-name.
Metadata wajib ditetapkan menggunakan sifat @maven.publication.metadata.xxx.
Ambil perhatian bahawa sifat @maven.publication.metadata.licenses menjangkakan format seperti: [nama lesen1]:[url lesen1],[nama lesen2]:[url lesen2],...
Untuk kemudahan, kami menggunakan pemalam Nexus,
yang menutup repositori pementasan secara automatik tanpa memerlukan campur tangan manual.
jeka.inject.classpath=dev.jeka:nexus-plugin mengarahkan Jeka untuk mengambil pemalam daripada Maven Central, manakala @nexus= mengaktifkannya.
Untuk menerbitkan, cuma jalankan: jeka project:pack maven:publish.
Ini akan:
Untuk melihat perkara yang akan diterbitkan, jalankan: jeka maven: info.
Penalaan halus dalam Jeka biasanya dicapai secara pemrograman, melengkapkan konfigurasi deklaratif daripada fail jeka.properties. Pendekatan ini membolehkan konfigurasi yang sangat fleksibel dan berkuasa dengan faedah menaip statik.
Kami boleh menyesuaikan kebergantungan yang dinyatakan dalam POM yang diterbitkan.
Dalam contoh berikut, kami mengalih keluar kebergantungan com.google.guava:guava dan memaksa kebergantungan jfiglet untuk mempunyai skop RUNTIME.
jeka.version=0.11.11 jeka.java.version=17 jeka.inject.classpath=dev.jeka:nexus-plugin @nexus= @project.moduleId=com.github.djeang:vincer-dom @project.gitVersioning.enable=true # Configuration for deploying to Maven central @maven.publication.predefinedRepo=OSSRH @maven.publication.metadata.projectName=Vincer-Dom @maven.publication.metadata.projectDescription=Modern Dom manipulation library for Java @maven.publication.metadata.projectUrl=https://github.com/djeang/vincer-dom @maven.publication.metadata.projectScmUrl=https://github.com/djeang/vincer-dom.git @maven.publication.metadata.licenses=Apache License V2.0:https://www.apache.org/licenses/LICENSE-2.0.html @maven.publication.metadata.developers=djeang:djeangdev@yahoo.fr
API membolehkan mentakrifkan artifak tambahan untuk diterbitkan.
Dalam contoh berikut, dua artifak dijana pada masa penerbitan:
class Build extends KBean { @Override void init() { var publication = load(MavenKBean.class).getMavenPublication(); publication.customizeDependencies(deps -> deps .minus("com.google.guava:guava") .withTransitivity("com.github.lalyos:jfiglet", JkTransitivity.RUNTIME) ); } }
Untuk menerbitkan ke repositori selain Maven Central, anda boleh menetapkan sifat berikut:
class Build extends KBean { @Override void init() { var publication = load(MavenKBean.class).getMavenPublication(); publication.putArtifact(JkArtifactId.of("doc", "zip"), this::genDoc); publication.putArtifact(JkArtifactId.of("shade", "jar"), project.packaging::createShadeJar); } private void genDoc(Path targetZipFile) { // generate documentation and zip it in targetZipFile } }
Letakkan sifat ini dalam [USER HOME]/.jeka/global.properties (bukannya jeka.properties fail) untuk memastikan konfigurasi konsisten merentas projek dan mengelakkan lebihan.
Untuk butiran lanjut, rujuk dokumentasi.
Berikut ialah konfigurasi POM Maven yang setara untuk mengatur projek ke Maven Central:
jeka.repos.publish=https://my.company/myrepo # Optional properties jeka.repos.publish.username=myUsername jeka.repos.publish.password=myPassword jeka.repos.publish.headers.Authorization=Bearer:: XHrU8hHKJHJ454==67g
Jeka menyediakan cara yang lebih mudah, namun berkuasa untuk membina perisian Java dan menerbitkan artifak ke Maven Central atau repositori lain, dengan konfigurasi dan usaha yang lebih sedikit daripada alatan tradisional.
Lawati tapak web, video dan contoh untuk mendapatkan idea tentang semua yang Jeka boleh lakukan dengan lebih baik.
Penafian: Saya adalah pengarang Jeka.
Atas ialah kandungan terperinci JeKa: Cara Paling Mudah untuk Menerbitkan di Maven Central. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!