Probleme mit Java-Paketen beheben

Hier finden Sie nützliche Informationen über die schrittweise Fehlerbehebung bei Problemen mit der Verwaltung von Java-Paketen in der Artifact Registry.

In Artifact Registry gespeicherte Abhängigkeit kann nicht aufgelöst werden

Maven löst einige Abhängigkeiten auf, bevor ein in pom.xml definierter Wagon angewendet wird, darunter:

  • Verweise in einem untergeordneten Maven-Projekt auf ein übergeordnetes Projekt mit dem Element <parent>.
  • In Artifact Registry gespeicherte Plug-in-Abhängigkeiten.

Wenn diese Abhängigkeiten in Ihrem Projekt aufgelöst werden müssen, müssen Sie den Mechanismus Core Extensions verwenden, damit Maven übergeordnete POM-Dateien und Plug-ins finden kann.

Erstellen Sie in Ihrem Projekt die Datei ${maven.projectBasedir}/.mvn/extensions.xml mit folgendem Inhalt. Das <extension>-Element definiert das Wagon.

<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.4</version>
  </extension>
</extensions>

Nicht eindeutige Snapshots können nicht in ein Snapshot-Repository hochgeladen werden

Sie können Snapshot-Versionen hochladen, die in einem Artifact Registry-Snapshot-Repository nicht vorhanden sind. Sie können jedoch keine Version überschreiben, die bereits im Repository vorhanden ist.

Nicht eindeutige Snapshots sind eine Funktion von Maven 2. Maven 3 fügt Snapshot-Versionsnummern immer einen Zeitstempel hinzu, damit jede Snapshot-Version eindeutig ist.

Artifact Registry unterstützt nicht eindeutige Snapshot-Versionen nur in Repositories mit einer Richtlinie für Snapshot-Versionen. Standardmäßig werden in Snapshot-Repositories nur eindeutige Snapshot-Versionen akzeptiert. Sie können eine Versionsrichtlinie nur beim Erstellen des Repositories festlegen.

Führen Sie den folgenden Befehl aus, um die Einstellungen für die Versionsrichtlinie für ein Repository zu ermitteln:

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

Dabei gilt:

Die Ausgabe des Befehls enthält unter mavenConfig Informationen zur Versionsrichtlinie. Im folgenden Beispiel gibt es für das Repository eine Richtlinie für Snapshot-Versionen und Snapshots können keine identischen Versionen im Repository überschreiben.

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