Mengelola paket Java

Artifact Registry memungkinkan Anda menyimpan, membuat versi, dan mengelola paket Java di repositori berformat Maven menggunakan Maven atau Gradle. Anda dapat memublikasikan artefak build, memeriksa versi dan file yang disimpan, mendeklarasikan paket sebagai dependensi project, dan menghapus versi yang tidak digunakan.

Jika ingin menggunakan sbt sebagai alat build untuk Scala dan Java, bukan Maven atau Gradle, Anda dapat menggunakan plugin sbt yang dibuat komunitas. Dokumen ini tidak membahas konfigurasi atau penggunaan klien Scala.

Sebelum memulai

  1. Jika repositori target tidak ada, buat repositori baru.
  2. Verifikasi bahwa Anda memiliki izin yang diperlukan untuk repositori.
  3. Pastikan Anda telah mengonfigurasi autentikasi. Jika Anda menggunakan token akses, pastikan Anda memuat ulang token sebelum terhubung ke repositori.
  4. (Opsional) Konfigurasi default untuk perintah gcloud.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengelola paket, minta administrator untuk memberi Anda peran IAM berikut di repositori:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Menambahkan paket

Mode repositori: Standar

Untuk menambahkan paket ke repositori:

Maven

Gunakan mvn deploy dan mvn release untuk menambahkan paket ke repositori.

Agar berhasil men-deploy project Maven yang mereferensikan induk, project harus menyertakan penyedia Wagon Artifact Registry dalam file ekstensi inti seperti yang dijelaskan dalam petunjuk autentikasi.

Gunakan mvn deploy:deploy-file untuk mengupload artefak yang dibuat di luar Maven.

Misalnya, perintah contoh ini men-deploy example/external.jar dan file project-nya example/pom.xml ke repositori us-central1-maven.pkg.dev/my-project/my-repo

mvn deploy:deploy-file \
-Durl=artifactregistry://us-central1-maven.pkg.dev/my-project/my-repo \
-DpomFile=example/pom.xml -Dfile=example/external.jar

Untuk mengonfigurasi integrasi dengan Cloud Build, lihat Mengintegrasikan dengan Cloud Build.

Gradle

Agar berhasil dipublikasikan ke repositori, file build.gradle Anda harus menyertakan bagian publications yang menentukan file yang akan diupload.

Gunakan perintah gradle publish untuk mengupload paket ke repositori.

Melihat paket dan versi

Mode repositori: standar, jarak jauh

Untuk melihat paket dan versi paket menggunakan Google Cloud konsol atau gcloud:

Konsol

  1. Buka halaman Repositori di Google Cloud konsol.

    Buka halaman Repositori

  2. Dalam daftar repositori, klik repositori yang sesuai.

    Halaman Paket mencantumkan paket di repositori.

  3. Klik paket untuk melihat versi paket.

gcloud

Untuk mencantumkan paket di repositori, jalankan perintah berikut:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

Ganti kode berikut:

  • REPOSITORY adalah nama repositori. Jika Anda mengonfigurasi repositori default, Anda dapat menghapus flag ini untuk menggunakan default.
  • LOCATION adalah lokasi regional atau multi-regional lokasi repositori. Jika Anda mengonfigurasi default lokasi, Anda dapat menghapus flag ini untuk menggunakan default.

Untuk melihat versi paket, jalankan perintah berikut:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Ganti kode berikut:

  • PACKAGE adalah ID paket atau ID yang sepenuhnya memenuhi syarat untuk paket.
  • REPOSITORY adalah nama repositori. Jika Anda mengonfigurasi repositori default, Anda dapat menghapus flag ini untuk menggunakan default.
  • LOCATION adalah lokasi regional atau multi-regional lokasi repositori. Gunakan flag ini untuk melihat repositori di lokasi tertentu. Jika Anda mengonfigurasi lokasi default, Anda dapat menghapus flag ini untuk menggunakan default.

Untuk repositori jarak jauh, daftar yang ditampilkan harus menyertakan semua dependensi langsung dan transitif.

Menyiapkan daftar file

Mode repositori: standar, jarak jauh

Anda dapat mencantumkan file dalam repositori, file dalam semua versi paket yang ditentukan, atau file dalam versi tertentu dari paket.

Untuk semua perintah berikut, Anda dapat menetapkan jumlah maksimum file yang akan ditampilkan dengan menambahkan tanda --limit ke perintah.

Untuk mencantumkan semua file dalam project, repositori, dan lokasi default saat nilai default dikonfigurasi:

gcloud artifacts files list

Untuk mencantumkan file dalam project, repositori, dan lokasi tertentu, jalankan perintah:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

Untuk mencantumkan file untuk semua versi paket tertentu:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

Untuk mencantumkan file untuk versi paket tertentu:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION

Ganti nilai berikut:

  • LOCATION: lokasi regional atau multi-regional repositori.
  • PROJECT: Google Cloud Project ID Anda. Jika project ID Anda berisi titik dua (:), lihat Project yang tercakup dalam domain.
  • REPOSITORY: nama repositori tempat image disimpan.
  • PACKAGE: nama paket.
  • VERSION: versi paket.

Contoh

Pertimbangkan informasi paket berikut:

  • Project: my-project
  • Repository: my-repo
  • Lokasi repositori: us-west1
  • Paket: my-app

Perintah berikut mencantumkan semua file di repositori my-repo di lokasi us-west1 dalam project default:

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
Perintah berikut mencantumkan file dalam paket versi 1.0.

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

Mendownload paket

Mode repositori: standar, jarak jauh, virtual

Untuk mendownload artefak sebagai bagian dari build, Anda mendeklarasikan artefak sebagai dependensi.

Maven

  1. Deklarasikan paket yang ingin Anda download dalam file pom.xml project. Contoh berikut mendeklarasikan paket artifact versi 1.0 sebagai dependensi.

    <dependencies>
        <dependency>
            <groupId>group</groupId>
            <artifactId>artifact</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
    

    Untuk mempelajari lebih lanjut dependensi Maven, lihat pengantar dependensi dan referensi dependensi Maven.

  2. Bangun project Java.

    mvn compile
    

Gradle

  1. Deklarasikan paket yang ingin Anda download dalam file build.gradle project. Contoh berikut mendeklarasikan paket artifact versi 1.0 sebagai dependensi kompilasi eksternal.

    Untuk mempelajari lebih lanjut dependensi Gradle, lihat dokumentasi Gradle.

    dependencies {
        compile group: 'group', name: 'artifact', version: '1.0'
    }
    
  2. Bangun project Java.

    gradle build
    

Untuk repositori standar, Anda mendownload paket langsung dari repositori.

Untuk repositori jarak jauh, Anda mendownload salinan paket yang di-cache dan dependensinya. Jika salinan yang di-cache tidak ada, repositori jarak jauh akan mendownload paket dari sumber upstream dan meng-cache-nya sebelum menayangkannya kepada Anda. Anda dapat memverifikasi bahwa repositori jarak jauh mengambil paket dari sumber upstream dengan melihat daftar paket di repositori.

Untuk repositori virtual, Artifact Registry menelusuri repositori upstream untuk paket yang diminta.

  • Repositori jarak jauh upstream akan mendownload dan meng-cache paket yang diminta jika salinan yang di-cache tidak ada. Repositori virtual hanya menayangkan paket yang diminta, tidak menyimpannya.
  • Jika Anda meminta versi yang tersedia di lebih dari satu repositori upstream, Artifact Registry akan memilih repositori upstream yang akan digunakan berdasarkan setelan prioritas yang dikonfigurasi untuk repositori virtual.

Misalnya, pertimbangkan repositori virtual dengan setelan prioritas berikut untuk repositori upstream:

  • main-repo: Prioritas ditetapkan ke 100
  • secondary-repo1: Prioritas ditetapkan ke 80.
  • secondary-repo2: Prioritas ditetapkan ke 80.
  • test-repo: Prioritas ditetapkan ke 20.

main-repo memiliki nilai prioritas tertinggi, sehingga repositori virtual selalu menelusurinya terlebih dahulu.

secondary-repo1 dan secondary-repo2 memiliki prioritas yang ditetapkan ke 80. Jika paket yang diminta tidak tersedia di main-repo, Artifact Registry akan menelusuri repositori ini berikutnya. Karena keduanya memiliki nilai prioritas yang sama, Artifact Registry dapat memilih untuk menayangkan paket dari salah satu repositori jika versi tersedia di keduanya.

test-repo memiliki nilai prioritas terendah dan akan menayangkan artefak yang disimpan jika tidak ada repositori upstream lain yang memilikinya.

Menghapus paket dan versi

Mode repositori: standar, jarak jauh

Anda dapat menghapus paket dan semua versinya, atau menghapus versi tertentu.

  • Setelah Anda menghapus paket, Anda tidak dapat mengurungkan tindakan tersebut.
  • Untuk repositori jarak jauh, hanya salinan paket yang di-cache yang dihapus. Sumber upstream tidak terpengaruh. Jika Anda menghapus paket yang di-cache, Artifact Registry akan mendownload dan meng-cache-nya lagi saat repositori menerima permintaan untuk versi paket yang sama pada waktu berikutnya.

Sebelum menghapus paket atau versi paket, pastikan Anda telah mengomunikasikan atau mengatasi semua dependensi penting di dalamnya.

Untuk menghapus paket:

Konsol

  1. Buka halaman Repositori di Google Cloud konsol.

    Buka halaman Repositori

  2. Dalam daftar repositori, klik repositori yang sesuai.

    Halaman Paket mencantumkan paket di repositori.

  3. Pilih paket yang ingin Anda hapus.

  4. Klik DELETE.

  5. Pada kotak dialog konfirmasi, klik HAPUS.

gcloud

Jalankan perintah berikut:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

Ganti kode berikut:

  • PACKAGE adalah nama paket di repositori.
  • REPOSITORY adalah nama repositori. Jika Anda mengonfigurasi repositori default, Anda dapat menghapus tanda ini untuk menggunakan default.
  • LOCATION adalah lokasi repositori regional atau multi-regional. Gunakan flag ini untuk melihat repositori di lokasi tertentu. Jika Anda mengonfigurasi lokasi default, Anda dapat menghilangkan tanda ini untuk menggunakan default.

Bendera --async menyebabkan perintah langsung kembali, tanpa menunggu operasi yang sedang berlangsung selesai.

Untuk menghapus versi paket:

Konsol

  1. Buka halaman Repositori di Google Cloud konsol.

    Buka halaman Repositori

  2. Dalam daftar repositori, klik repositori yang sesuai.

    Halaman Paket mencantumkan paket di repositori.

  3. Klik paket untuk melihat versi paket tersebut.

  4. Pilih versi yang ingin Anda hapus.

  5. Klik DELETE.

  6. Pada kotak dialog konfirmasi, klik HAPUS.

gcloud

Jalankan perintah berikut:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

Ganti kode berikut:

  • VERSION adalah nama versi yang akan dihapus.
  • PACKAGE adalah nama paket di repositori.
  • REPOSITORY adalah nama repositori. Jika Anda mengonfigurasi repositori default, Anda dapat menghapus tanda ini untuk menggunakan default.
  • LOCATION adalah lokasi repositori regional atau multi-regional. Gunakan flag ini untuk melihat repositori di lokasi tertentu. Jika Anda mengonfigurasi lokasi default, Anda dapat menghilangkan tanda ini untuk menggunakan default.

Flag --async menyebabkan perintah segera ditampilkan, tanpa menunggu operasi yang sedang berlangsung selesai.

Langkah berikutnya