Rumah > Java > javaTutorial > JeKa: Cara Paling Mudah untuk Menerbitkan di Maven Central

JeKa: Cara Paling Mudah untuk Menerbitkan di Maven Central

Linda Hamilton
Lepaskan: 2024-12-30 21:28:13
asal
775 orang telah melayarinya

JeKa: The Simplest Way to Publish on 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
Salin selepas log masuk
Salin selepas log masuk

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.

Penjelasan

Sekarang anda tahu cara melakukannya, mari terangkan cara ia berfungsi.

Jeka dan Java Versioning

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.

Nyatakan ID Modul dan Versi

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.

Konfigurasikan Repositori Penerbitan

@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:

  • jeka.repos.publish.nama pengguna: nama pengguna akaun OSSRH
  • jeka.repos.publish.password: kata laluan akaun OSSRH
  • jeka.gpg.secret-key: Kunci rahsia GPG berperisai sebagai rentetan
  • jeka.gpg.passphrase: Ungkapan laluan yang melindungi kunci rahsia

Kandungan jeka.gpg.secret-key boleh diperolehi dengan melaksanakan: gpg --export-secret-key --armor my-key-name.

Menyediakan Metadata Penerbitan

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],...

Automatikkan Penerbitan Keluaran

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.

Laksanakan Bina

Untuk menerbitkan, cuma jalankan: jeka project:pack maven:publish.

Ini akan:

  • Buat JAR untuk diterbitkan (projek: pek).
  • Buat sumber dan JAR Javadoc.
  • Jana fail POM yang diterbitkan.
  • Kira semua jumlah semak.
  • Tandatangan semua fail yang diterbitkan.
  • Tolak semuanya ke repositori OSSRH.

Untuk melihat perkara yang akan diterbitkan, jalankan: jeka maven: info.

Penalaan Halus

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.

Sesuaikan Ketergantungan Transitif

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
Salin selepas log masuk
Salin selepas log masuk

Tambah Artifak Tambahan

API membolehkan mentakrifkan artifak tambahan untuk diterbitkan.

Dalam contoh berikut, dua artifak dijana pada masa penerbitan:

  1. Fail ZIP yang mengandungi dokumentasi.
  2. JAR uber berlorek (JAR yang merangkumi semua kelas daripada kebergantungan dengan pakej yang dinamakan semula untuk mengelakkan konflik).
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)
        );
    }

}
Salin selepas log masuk

Terbitkan di Repositori Lain

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
    }

}
Salin selepas log masuk

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.

Perbandingan dengan Maven

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
Salin selepas log masuk

Kesimpulan

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan