Resolver problemas de pacotes Java

Saiba mais sobre as etapas de solução de problemas que podem ser úteis se você tiver problemas ao gerenciar 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 vagon definido em pom.xml, incluindo:

  • Referências em um projeto filho do Maven a um projeto pai usando o elemento <parent>.
  • Dependências de plug-in armazenadas no Artifact Registry.

Se o projeto precisar resolver essas dependências, use o mecanismo de extensões principais para garantir que o Maven possa localizar arquivos POM e plug-ins pais.

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

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

Não é possível fazer upload de snapshots não exclusivos para um repositório de snapshots

É possível fazer upload de versões de snapshot que não existam em um repositório de snapshots do Artifact Registry, mas não é possível substituir uma versão que já exista no repositório.

Os snapshots não exclusivos são um recurso do Maven 2. O Maven 3 sempre adiciona um carimbo de data/hora aos números da versão do snapshot para que cada versão seja única.

O Artifact Registry é compatível apenas com versões de snapshot não exclusivas em repositórios com uma política de versão de snapshot. Por padrão, os repositórios de snapshots aceitam apenas versões exclusivas. Só é possível definir uma política de versão ao criar o repositório.

Para descobrir as configurações de política de versão de um repositório, execute o seguinte comando:

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

Por

  • REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
  • PROJECT é o ID do projeto. Se essa sinalização for omitida, o projeto padrão ou atual é usado.
  • LOCATION é o local regional ou multirregional do repositório.

A saída do comando inclui informações sobre a política de versão em mavenConfig. No exemplo a seguir, o repositório tem uma política de versão e os snapshots 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