排查 Java 软件包问题

如果您在 Artifact Registry 中管理 Java 软件包时遇到问题,请查阅以下实用的问题排查步骤。

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

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

  • 子级 Maven 项目中使用 <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.1</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