Solução de problemas de pacotes Java

Saiba mais sobre as etapas de solução de problemas que podem ser úteis se você tiver dúvidas 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 em um projeto filho do Maven a um projeto pai usando o elemento <parent>.
  • As dependências de plug-in armazenadas no Artifact Registry.

Caso seu projeto precise resolver essas dependências, use o mecanismo das extensões principais para garantir que o Maven possa localizar plug-ins e arquivos POM pai.

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

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

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

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 seja exclusiva.

O Artifact Registry só é compatível com versões de snapshot não exclusivas em repositórios com uma política de versão do snapshot. Por padrão, os repositórios de snapshots aceitam apenas versões de snapshot exclusivas. Só é possível definir uma política de versão durante a criação do 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]

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 em mavenConfig. No exemplo a seguir, o repositório tem uma política de versão de snapshot, 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