排查 Java 软件包问题

了解以下可能会对您有所帮助的问题排查步骤 如何在管理 Artifact Registry 中的 Java 软件包时遇到问题。

无法解析 Artifact Registry 中存储的依赖项

Maven 会在应用 pom.xml 中定义的 wagon 之前解析一些依赖项,包括:

  • 使用 <parent> 元素。
  • 存储在 Artifact Registry 中的插件依赖项。

如果您的项目需要解析这些依赖项,您必须使用核心扩展机制,以确保 Maven 能够找到父级 POM 文件和插件。

在项目中创建包含以下内容的 ${maven.projectBasedir}/.mvn/extensions.xml 文件。<extension> 元素用于定义 wagon。

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

无法将非唯一快照上传到快照代码库

您可以上传 Artifact Registry 快照代码库中不存在的快照版本,但无法覆盖代码库中已存在的版本。

非唯一快照是 Maven 2 的一项功能。Maven 3 始终添加时间戳 快照版本号,以便每个快照版本都是唯一的。

Artifact Registry 仅支持具有快照版本政策的代码库中的非唯一快照版本。默认情况下,快照代码库仅接受唯一的快照版本。只有在以下情况下,您才能设置版本政策: 创建代码库

如需查找代码库的版本政策设置,请运行以下命令 命令:

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

地点

  • REPOSITORY 是代码库的 ID。如果您配置了 默认 Artifact Registry 如果命令中省略了此标志,则系统会使用该标志。
  • PROJECT 是项目 ID。如果省略此标志,则系统会使用当前项目或默认项目
  • LOCATION 是代码库的单区域或多区域位置

该命令的输出包含有关版本政策的信息 低于 mavenConfig。在以下示例中,代码库有一个快照 版本政策和快照不能覆盖 存储库

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