Meminta paket Maven dari upstream dan koneksi eksternal - CodeArtifact

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Meminta paket Maven dari upstream dan koneksi eksternal

Mengimpor nama aset standar

Saat mengimpor versi paket Maven dari repositori publik, seperti Maven Central, AWS CodeArtifact mencoba mengimpor semua aset dalam versi paket tersebut. Seperti dijelaskan dalamMeminta versi paket dengan repositori hulu, pengimporan terjadi ketika:

  • Klien meminta aset Maven dari repositori. CodeArtifact

  • Versi paket belum ada di repositori atau upstreams nya.

  • Ada koneksi eksternal yang dapat dijangkau ke repositori Maven publik.

Meskipun klien mungkin hanya meminta satu aset, CodeArtifact upaya untuk mengimpor semua aset yang dapat ditemukan untuk versi paket tersebut. Bagaimana CodeArtifact menemukan aset mana yang tersedia untuk versi paket Maven tergantung pada repositori publik tertentu. Beberapa repositori Maven publik mendukung permintaan daftar aset, tetapi yang lain tidak. Untuk repositori yang tidak menyediakan cara untuk membuat daftar aset, CodeArtifact menghasilkan satu set nama aset yang mungkin ada. Misalnya, ketika aset apa pun dari versi junit 4.13.2 paket Maven diminta, CodeArtifact akan mencoba mengimpor aset berikut:

  • junit-4.13.2.pom

  • junit-4.13.2.jar

  • junit-4.13.2-javadoc.jar

  • junit-4.13.2-sources.jar

Mengimpor nama aset non-standar

Ketika klien Maven meminta aset yang tidak cocok dengan salah satu pola yang dijelaskan di atas, CodeArtifact periksa untuk melihat apakah aset tersebut ada di repositori publik. Jika aset ada, itu akan diimpor dan ditambahkan ke catatan versi paket yang ada, jika ada. Misalnya, versi paket Maven com.android.tools.build:aapt2 7.3.1-8691043 berisi aset berikut:

  • aapt2-7.3.1-8691043.pom

  • aapt2-7.3.1-8691043-windows.jar

  • aapt2-7.3.1-8691043-osx.jar

  • aapt2-7.3.1-8691043-linux.jar

Ketika klien meminta file POM, jika CodeArtifact tidak dapat mencantumkan aset versi paket, POM akan menjadi satu-satunya aset yang diimpor. Ini karena tidak ada aset lain yang cocok dengan pola nama aset standar. Namun, ketika klien meminta salah satu aset JAR, aset tersebut akan diimpor dan ditambahkan ke versi paket yang ada yang disimpan di CodeArtifact. Versi paket di repositori paling hilir (repositori yang diminta klien) dan repositori dengan koneksi eksternal yang dilampirkan akan diperbarui untuk memuat aset baru, seperti yang dijelaskan dalam. Retensi paket dari repositori hulu

Biasanya, setelah versi paket dipertahankan dalam CodeArtifact repositori, itu tidak terpengaruh oleh perubahan dalam repositori upstream. Untuk informasi selengkapnya, lihat Retensi paket dari repositori hulu. Namun, perilaku aset Maven dengan nama non-standar yang dijelaskan sebelumnya merupakan pengecualian untuk aturan ini. Meskipun versi paket hilir tidak akan berubah tanpa aset tambahan yang diminta oleh klien, dalam situasi ini, versi paket yang dipertahankan dimodifikasi setelah awalnya dipertahankan dan karenanya tidak dapat diubah. Perilaku ini diperlukan karena aset Maven dengan nama non-standar tidak akan dapat diakses melalui. CodeArtifact Perilaku ini juga memungkinkan jika ditambahkan ke versi paket Maven di repositori publik setelah versi paket dipertahankan dalam repositori. CodeArtifact

Memeriksa asal-usul aset

Saat menambahkan aset baru ke versi paket Maven yang dipertahankan sebelumnya, CodeArtifact konfirmasikan asal versi paket yang ditahan sama dengan asal aset baru. Ini mencegah pembuatan versi paket “campuran” di mana aset yang berbeda berasal dari repositori publik yang berbeda. Tanpa pemeriksaan ini, pencampuran aset dapat terjadi jika versi paket Maven diterbitkan ke lebih dari satu repositori publik dan repositori tersebut adalah bagian dari grafik hulu repositori. CodeArtifact

Mengimpor aset baru dan status versi paket di repositori hulu

Status versi paket versi paket di repositori hulu dapat CodeArtifact mencegah mempertahankan versi tersebut di repositori hilir.

Sebagai contoh, katakanlah sebuah domain memiliki tiga repositori:repo-A,, dan repo-Brepo-C, di mana repo-B adalah upsteam dari repo-A dan repo-C upstream dari. repo-B

Diagram tentang cara kerja aset dan versi paket baru di repositori hulu.

Package 7.3.1 versi paket Maven com.android.tools.build:aapt2 hadir repo-B dan memiliki status. Published Itu tidak hadir direpo-A. Jika klien meminta aset versi paket ini darirepo-A, responsnya akan menjadi 200 (OK) dan versi paket Maven 7.3.1 akan dipertahankan. repo-A Namun, jika status versi paket 7.3.1 di repo-B adalah Archived atauDisposed, responsnya akan menjadi 404 (Tidak Ditemukan) karena aset versi paket di kedua status tersebut tidak dapat diunduh.

Perhatikan bahwa menyetel kontrol asal paket ke upstream=BLOCK for com.android.tools.build:aapt2 in repo-Arepo-B,, dan repo-C akan mencegah aset baru diambil untuk semua versi paket tersebutrepo-A, terlepas dari status versi paket.