Resolver problemas de pacotes Java

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

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

Se o seu projeto precisa resolver essas dependências, você precisa usar o extensões principais para garantir que o Maven possa localizar plug-ins e arquivos POM 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.3</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 snapshots que não existem em um repositório de snapshots do Artifact Registry, mas não é possível substituir uma versão que já existe 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 a números de versão de snapshot para que cada versão de snapshot seja única.

O Artifact Registry só oferece suporte a versões de snapshots não exclusivas em repositórios com uma política de versão de snapshot. Repositórios de snapshots por padrão aceitam apenas versões de snapshot exclusivas. Só é possível definir uma política de versão ao criar o repositório.

Para descobrir as configurações da política de versão 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 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 abaixo de mavenConfig. No exemplo a seguir, o repositório tem um snapshot os snapshots e a política de versão não podem substituir versões idênticas na repositório de dados.

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