Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan snapshot Maven
Snapshot Maven adalah versi khusus dari paket Maven yang mengacu pada kode cabang produksi terbaru. Ini adalah versi pengembangan sebelum versi rilis akhir. Anda dapat mengidentifikasi versi snapshot dari paket Maven dengan akhiran SNAPSHOT yang ditambahkan ke versi paket. Sebagai contoh, snapshot versi 1.1 adalah 1.1-SNAPSHOT. Untuk informasi selengkapnya, lihat What is a SNAPSHOT version?
AWS CodeArtifact mendukung penerbitan dan penggunaan snapshot Maven. Snapshot unik yang menggunakan nomor versi berbasis waktu adalah satu-satunya snapshot yang didukung. CodeArtifact tidak mendukung snapshot non-unik yang dihasilkan oleh klien Maven 2. Anda dapat mempublikasikan snapshot Maven yang didukung ke repositori apa pun. CodeArtifact
Topik
Penerbitan snapshot di CodeArtifact
AWS CodeArtifact mendukung pola permintaan yang digunakan klien, sepertimvn, saat menerbitkan snapshot. Karena itu, Anda dapat mengikuti dokumentasi untuk alat build atau pengelola paket Anda tanpa memiliki pemahaman mendetail tentang bagaimana snapshot Maven dipublikasikan. Jika Anda melakukan sesuatu yang lebih kompleks, bagian ini menjelaskan secara rinci bagaimana CodeArtifact menangani snapshot.
Ketika snapshot Maven dipublikasikan ke CodeArtifact repositori, versi sebelumnya dipertahankan dalam versi baru yang disebut build. Setiap kali snapshot Maven dipublikasikan, versi build baru dibuat. Semua versi snapshot sebelumnya dipertahankan dalam versi build. Saat snapshot Maven diterbitkan, status versi paketnya disetel ke Published dan status build yang berisi versi sebelumnya disetel ke. Unlisted Perilaku ini hanya berlaku untuk versi paket Maven di mana versi paket memiliki -SNAPSHOT akhiran.
Misalnya, versi snapshot dari paket maven yang dipanggil diunggah ke com.mycompany.myapp:pkg-1 repositori yang dipanggil. CodeArtifact my-maven-repo Versi snapshot adalah1.0-SNAPSHOT. Sejauh ini, com.mycompany.myapp:pkg-1 belum ada versi yang diterbitkan. Pertama, aset build awal dipublikasikan di jalur ini:
PUT maven/my-maven-repo/com/mycompany/myapp/pkg-1/1.0-SNAPSHOT/pkg-1-1.0-20210728.194552-1.jar PUT maven/my-maven-repo/com/mycompany/myapp/pkg-1/1.0-SNAPSHOT/pkg-1-1.0-20210728.194552-1.pom
Perhatikan bahwa stempel waktu 20210728.194552-1 dihasilkan oleh klien yang menerbitkan build snapshot.
Setelah file.pom dan .jar diunggah, satu-satunya versi com.mycompany.myapp:pkg-1 yang ada di repositori adalah. 1.0-20210728.194552-1 Ini terjadi meskipun versi yang ditentukan di jalur sebelumnya adalah. 1.0-SNAPSHOT Status versi paket pada saat ini adalahUnfinished.
aws codeartifact list-package-versions --domainmy-domain--repository \my-maven-repo--package pkg-1 --namespace com.mycompany.myapp --format maven { "versions": [ { "version": "1.0-20210728.194552-1", "revision": "GipMW+599JmwTcTLaXo9YvDsVQ2bcrrk/02rWJhoKUU=", "status": "Unfinished" } ], "defaultDisplayVersion": null, "format": "maven", "package": "pkg-1", "namespace": "com.mycompany.myapp" }
Selanjutnya, klien mengunggah maven-metadata.xml file untuk versi paket:
PUTmy-maven-repo/com/mycompany/myapp/pkg-1/1.0-SNAPSHOT/maven-metadata.xml
Ketika file maven-metadata.xml berhasil diunggah, CodeArtifact buat versi 1.0-SNAPSHOT paket dan atur 1.0-20210728.194552-1 versinya. Unlisted
aws codeartifact list-package-versions --domainmy-domain--repository \my-maven-repo--package pkg-1 --namespace com.mycompany.myapp --format maven { "versions": [ { "version": "1.0-20210728.194552-1", "revision": "GipMW+599JmwTcTLaXo9YvDsVQ2bcrrk/02rWJhoKUU=", "status": "Unlisted" }, { "version": "1.0-SNAPSHOT", "revision": "tWu8n3IX5HR82vzVZQAxlwcvvA4U/+S80edWNAkil24=", "status": "Published" } ], "defaultDisplayVersion": "1.0-SNAPSHOT", "format": "maven", "package": "pkg-1", "namespace": "com.mycompany.myapp" }
Pada titik ini, versi snapshot 1.0-SNAPSHOT dapat dikonsumsi dalam build. Meskipun ada dua versi com.mycompany.myapp:pkg-1 dalam repositorimy-maven-repo, keduanya mengandung aset yang sama.
aws codeartifact list-package-version-assets --domainmy-domain--repository \my-maven-repo--format maven --namespace com.mycompany.myapp \ --package pkg-1 --package-version 1.0-SNAPSHOT--query 'assets[*].name' [ "pkg-1-1.0-20210728.194552-1.jar", "pkg-1-1.0-20210728.194552-1.pom" ]
Menjalankan list-package-version-assets perintah yang sama seperti yang ditunjukkan sebelumnya dengan --package-version parameter diubah untuk 1.0-20210728.194552-1 menghasilkan output yang identik.
Karena build tambahan 1.0-SNAPSHOT ditambahkan ke repositori, versi Unlisted paket baru dibuat untuk setiap build baru. Aset versi 1.0-SNAPSHOT diperbarui setiap kali sehingga versi selalu mengacu pada versi terbaru untuk versi tersebut. Memperbarui 1.0-SNAPSHOT dengan aset terbaru dimulai dengan mengunggah maven-metadata.xml file untuk build baru.
Mengkonsumsi versi snapshot
Jika Anda meminta snapshot, versi dengan status Published dikembalikan. Ini selalu merupakan versi terbaru snapshot Maven. Anda juga dapat meminta build snapshot tertentu menggunakan nomor versi build (misalnya,1.0-20210728.194552-1) alih-alih versi snapshot (misalnya,1.0-SNAPSHOT) di jalur URL. Untuk melihat versi build snapshot Maven, gunakan ListPackageVersions API di Panduan CodeArtifact API dan setel parameter status ke. Unlisted
Menghapus versi snapshot
Untuk menghapus semua versi build snapshot Maven, gunakan DeletePackageVersionsAPI, tentukan versi yang ingin Anda hapus.
Penerbitan snapshot dengan curl
Jika Anda memiliki versi snapshot yang disimpan di Amazon Simple Storage Service (Amazon S3) atau produk repositori artefak lainnya, Anda mungkin ingin mempublikasikannya kembali. AWS CodeArtifact Karena cara CodeArtifact mendukung snapshot Maven (lihatPenerbitan snapshot di CodeArtifact), menerbitkan snapshot dengan klien HTTP generik seperti lebih kompleks daripada menerbitkan versi rilis curl Maven seperti yang dijelaskan dalam. Publikasi dengan curl Perhatikan bahwa bagian ini tidak relevan jika Anda membuat dan menerapkan versi snapshot dengan klien Maven seperti atau. mvn gradle Anda harus mengikuti dokumentasi untuk klien itu.
Menerbitkan versi snapshot melibatkan penerbitan satu atau beberapa build versi snapshot. Di CodeArtifact, jika ada n build dari versi snapshot, akan ada n + 1 CodeArtifact versi: n versi build semua dengan statusUnlisted, dan satu versi snapshot (build terbaru yang diterbitkan) dengan status. Published Versi snapshot (yaitu, versi dengan string versi yang berisi “-SNAPSHOT”) berisi kumpulan aset yang identik dengan build terbaru yang diterbitkan. Cara paling sederhana untuk membuat struktur ini menggunakan curl adalah sebagai berikut:
-
Publikasikan semua aset dari semua build menggunakan
curl. -
Publikasikan
maven-metadata.xmlfile build terakhir (yaitu, build dengan stempel tanggal-waktu terbaru) dengan.curlIni akan membuat versi dengan “-SNAPSHOT” dalam string versi dan dengan set aset yang benar. -
Gunakan UpdatePackageVersionsStatusAPI untuk menyetel status semua versi build yang tidak terbaru.
Unlisted
Gunakan curl perintah berikut untuk mempublikasikan aset snapshot (seperti file.jar dan .pom) untuk versi snapshot dari sebuah paket: 1.0-SNAPSHOT com.mycompany.app:pkg-1
curl --user "aws:$CODEARTIFACT_AUTH_TOKEN" -H "Content-Type: application/octet-stream" \ -X PUT https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_maven_repo/com/mycompany/app/pkg-1/1.0-SNAPSHOT/pkg-1-1.0-20210729.171330-2.jar\ --data-binary@pkg-1-1.0-20210728.194552-1.jar
curl --user "aws:$CODEARTIFACT_AUTH_TOKEN" -H "Content-Type: application/octet-stream" \ -X PUT https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_maven_repo/com/mycompany/app/pkg-1/1.0-SNAPSHOT/pkg-1-1.0-20210729.171330-2.pom\ --data-binary@pkg-1-1.0-20210728.194552-1.pom
Saat menggunakan contoh-contoh ini:
-
Ganti
my_domaindengan nama CodeArtifact domain Anda. -
Ganti
111122223333dengan Akun AWS ID pemilik CodeArtifact domain Anda. -
Ganti
us-west-2Wilayah AWS dengan tempat CodeArtifact domain Anda berada. -
Ganti
my_maven_repodengan nama CodeArtifact repositori Anda.
penting
Anda harus mengawali nilai --data-binary parameter dengan @ karakter. Saat memasukkan nilai dalam tanda kutip, @ harus disertakan di dalam tanda kutip.
Anda mungkin memiliki lebih dari dua aset untuk diunggah untuk setiap build. Misalnya, mungkin ada file Javadoc dan sumber JAR selain JAR utama dan. pom.xml Tidak perlu mempublikasikan file checksum untuk aset versi paket karena CodeArtifact secara otomatis menghasilkan checksum untuk setiap aset yang diunggah. Untuk memverifikasi aset telah diunggah dengan benar, ambil checksum yang dihasilkan menggunakan list-package-version-assets perintah dan bandingkan dengan checksum asli. Untuk informasi selengkapnya tentang cara CodeArtifact menangani checksum Maven, lihat. Gunakan checksum Maven
Gunakan perintah curl berikut untuk memublikasikan maven-metadata.xml file untuk versi build terbaru:
curl --user "aws:$CODEARTIFACT_AUTH_TOKEN" -H "Content-Type: application/octet-stream" \ -X PUT https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_maven_repo/com/mycompany/app/pkg-1/1.0-SNAPSHOT/maven-metadata.xml \ --data-binary @maven-metadata.xml
maven-metadata.xmlFile harus mereferensikan setidaknya satu aset dalam versi build terbaru dalam <snapshotVersions> elemen. Selain itu, <timestamp> nilainya harus ada dan harus sesuai dengan stempel waktu dalam nama file aset. Misalnya, untuk 20210729.171330-2 build yang diterbitkan sebelumnya, isinya maven-metadata.xml adalah:
<?xml version="1.0" encoding="UTF-8"?> <metadata> <groupId>com.mycompany.app</groupId> <artifactId>pkg-1</artifactId> <version>1.0-SNAPSHOT</version> <versioning> <snapshot> <timestamp>20210729.171330</timestamp> <buildNumber>2</buildNumber> </snapshot> <lastUpdated>20210729171330</lastUpdated> <snapshotVersions> <snapshotVersion> <extension>jar</extension> <value>1.0-20210729.171330-2</value> <updated>20210729171330</updated> </snapshotVersion> <snapshotVersion> <extension>pom</extension> <value>1.0-20210729.171330-2</value> <updated>20210729171330</updated> </snapshotVersion> </snapshotVersions> </versioning> </metadata>
maven-metadata.xmlSetelah diterbitkan, langkah terakhir adalah mengatur semua versi build lainnya (yaitu, semua versi build terpisah dari build terbaru) agar memiliki status versi paketUnlisted. Misalnya, jika 1.0-SNAPSHOT versi memiliki dua build, dengan build pertama20210728.194552-1, perintah untuk menyetel build tersebut Unlisted adalah:
aws codeartifact update-package-versions-status --domainmy-domain--domain-owner 111122223333 \ --repositorymy-maven-repo--format maven --namespace com.mycompany.app --package pkg-1 \ --versions 1.0-20210728.194552-1 --target-status Unlisted
Snapshot dan koneksi eksternal
Snapshot Maven tidak dapat diambil dari repositori publik Maven melalui koneksi eksternal. AWS CodeArtifact hanya mendukung mengimpor versi rilis Maven.
Snapshot dan repositori upstream
Secara umum, snapshot Maven bekerja dengan cara yang sama seperti versi rilis Maven saat digunakan dengan repositori upstream, tetapi ada batasan jika Anda berencana menerbitkan snapshot dari versi paket yang sama ke dua repositori yang memiliki hubungan hulu. Misalnya, katakan bahwa ada dua repositori dalam sebuah AWS CodeArtifact domain, R danU, di mana U adalah hulu. R Jika Anda memublikasikan build baruR, saat klien Maven meminta build terbaru dari versi snapshot tersebut, CodeArtifact mengembalikan versi terbaru dari. U Ini bisa tidak terduga karena versi terbaru sekarang masukR, tidakU. Ada dua cara untuk menghindari hal ini:
-
Jangan mempublikasikan build versi snapshot seperti
1.0-SNAPSHOTinR, jika1.0-SNAPSHOTada di.U -
Gunakan kontrol asal CodeArtifact paket untuk menonaktifkan upstream pada paket itu di.
RYang terakhir akan memungkinkan Anda untuk mempublikasikan build1.0-SNAPSHOTinR, tetapi juga akan mencegahRversi lain dari paket itu dariUyang belum dipertahankan.