פתרון בעיות בחבילות Java

במאמר הזה מפורטים שלבים לפתרון בעיות שיכולים לעזור לכם אם נתקלתם בבעיות בניהול חבילות Java ב-Artifact Registry.

אי אפשר לפתור תלות שמאוחסנת ב-Artifact Registry

‫Maven פותר חלק מהתלות לפני שהוא מחיל קרון שמוגדר ב-pom.xml, כולל:

  • הפניות בפרויקט Maven משני לפרויקט ראשי באמצעות הרכיב <parent>.
  • יחסי תלות של תוספים שמאוחסנים ב-Artifact Registry.

אם הפרויקט צריך לפתור את יחסי התלות האלה, צריך להשתמש במנגנון של תוספי הליבה כדי לוודא ש-Maven יכול לאתר קובצי POM של אב ותוספים.

בפרויקט, יוצרים את הקובץ ${maven.projectBasedir}/.mvn/extensions.xml עם התוכן הבא. רכיב <extension> מגדיר את הקרון.

<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
  <extension>
    <groupId>com.google.cloud.artifactregistry</groupId>
    <artifactId>artifactregistry-maven-wagon</artifactId>
    <version>2.2.5</version>
  </extension>
</extensions>

אי אפשר להעלות מאגרי תמונות מצב לא ייחודיים למאגר תמונות מצב

אפשר להעלות גרסאות של תמונות מצב שלא קיימות במאגר תמונות המצב של Artifact Registry, אבל אי אפשר להחליף גרסה שכבר קיימת במאגר.

תמונות מצב לא ייחודיות הן תכונה של Maven 2. ‫Maven 3 תמיד מוסיף חותמת זמן למספרי גרסאות של קובצי snapshot, כך שכל גרסת snapshot היא ייחודית.

ב-Artifact Registry יש תמיכה רק בגרסאות snapshot לא ייחודיות במאגרי מידע עם מדיניות גרסאות snapshot. כברירת מחדל, מאגרי snapshot מקבלים רק גרסאות ייחודיות של snapshot. אפשר להגדיר מדיניות גרסאות רק כשיוצרים את המאגר.

כדי לגלות את הגדרות מדיניות הגרסאות של מאגר, מריצים את הפקודה הבאה:

gcloud artifacts repositories describe REPOSITORY \
    [--project=PROJECT] \
    [--location=LOCATION]

כאשר:

  • REPOSITORY הוא המזהה של המאגר. אם הגדרתם מאגר ברירת מחדל של Artifact Registry, המערכת תשתמש בו אם לא תציינו את הדגל הזה בפקודה.
  • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
  • LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.

הפלט של הפקודה כולל מידע על מדיניות הגרסאות בקטע mavenConfig. בדוגמה הבאה, למאגר יש מדיניות גרסאות של תמונות מצב, ואי אפשר להחליף במאגר גרסאות זהות של תמונות מצב.

Encryption: Google-managed key
createTime: '2021-09-23T19:39:10.897404Z'
format: MAVEN
mavenConfig:
 allowSnapshotOverwrites: false
 versionPolicy: SNAPSHOT