Cómo solucionar problemas de paquetes de Java

Obtén información sobre los pasos para solucionar problemas que pueden servirte si tienes dificultades para administrar paquetes de Java en Artifact Registry.

No se puede resolver una dependencia almacenada en Artifact Registry

Maven resuelve algunas dependencias antes de aplicar un vagón definido en pom.xml, incluido lo siguiente:

  • Referencias en un proyecto secundario de Maven a un proyecto superior a través de <parent>.
  • Dependencias de complementos almacenadas en Artifact Registry.

Si tu proyecto necesita resolver estas dependencias, debes usar el extensiones principales para garantizar que Maven pueda localizar archivos POM y complementos superiores.

En tu proyecto, crea el archivo ${maven.projectBasedir}/.mvn/extensions.xml con el siguiente contenido. El elemento <extension> define la alternativa.

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

No se pueden subir instantáneas no únicas a un repositorio de instantáneas.

Puedes subir versiones de instantáneas que no existen en un Artifact Registry en el repositorio de instantáneas, pero no puedes reemplazar una versión que ya existe del repositorio.

Las instantáneas no únicas son una función de Maven 2. Maven 3 siempre agrega una marca de tiempo a los números de versión de instantáneas para que cada versión de instantánea sea única.

Artifact Registry solo es compatible con versiones de instantáneas que no son únicas en con una política de versiones de instantáneas. De forma predeterminada, los repositorios de instantáneas solo aceptan versiones de instantáneas únicas. Solo puedes establecer una política de versión cuando de crear el repositorio.

Para conocer la configuración de la política de versiones de un repositorio, ejecuta el siguiente comando:

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

Dónde

  • REPOSITORY es el ID del repositorio. Si configuraste un repositorio predeterminado de Artifact Registry, se usa cuando se omite esta marca del comando.
  • PROJECT es el ID del proyecto. Si se omite esta marca, se usa el proyecto predeterminado o actual.
  • LOCATION es la ubicación regional o multirregional del repositorio.

El resultado del comando incluye información sobre la política de versiones en mavenConfig. En el siguiente ejemplo, el repositorio tiene una instantánea la política de versiones y las instantáneas no pueden reemplazar versiones idénticas en el en un repositorio de confianza.

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