Resolva problemas de pacotes Java

Saiba mais sobre os passos de resolução de problemas que podem ser úteis se tiver problemas na gestão de pacotes Java no Artifact Registry.

Não é possível resolver uma dependência armazenada no Artifact Registry

O Maven resolve algumas dependências antes de aplicar um wagon definido em pom.xml, incluindo:

  • Referências num projeto Maven secundário a um projeto principal através do elemento <parent>.
  • Dependências de plug-ins armazenadas no Artifact Registry.

Se o seu projeto precisar de resolver estas dependências, tem de usar o mecanismo de extensões principais para garantir que o Maven consegue localizar ficheiros POM principais e plug-ins.

No seu projeto, crie o ficheiro ${maven.projectBasedir}/.mvn/extensions.xml com o seguinte conteúdo. O elemento <extension> define o vagão.

<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>

Não é possível carregar instantâneos não únicos para um repositório de instantâneos

Pode carregar versões de instantâneos que não existam num repositório de instantâneos do Artifact Registry, mas não pode substituir uma versão que já exista no repositório.

Os resumos não únicos são uma funcionalidade do Maven 2. O Maven 3 adiciona sempre uma indicação de tempo aos números de versão de pré-lançamento para que cada versão de pré-lançamento seja única.

O Artifact Registry só suporta versões de instantâneo não únicas em repositórios com uma política de versão de instantâneo. Por predefinição, os repositórios de resumos só aceitam versões de resumos únicas. Só pode definir uma política de versões quando criar o repositório.

Para saber as definições da política de versões de um repositório, execute o seguinte comando:

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

Onde

  • REPOSITORY é o ID do repositório. Se configurou um repositório do Artifact Registry predefinido, este é usado quando esta flag é omitida do comando.
  • PROJECT é o ID do projeto. Se esta flag for omitida, é usado o projeto predefinido atual.
  • LOCATION é a localização regional ou multirregional do repositório.

O resultado do comando inclui informações sobre a política de versões em mavenConfig. No exemplo seguinte, o repositório tem uma política de versões de instantâneos e os instantâneos não podem substituir versões idênticas no repositório.

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