如果您在 Artifact Registry 中管理 Java 软件包时遇到问题,请查看以下实用的问题排查步骤。
无法解析存储在 Artifact Registry 中的依赖项
Maven 会在应用 pom.xml
中定义的 wagon 之前解析一些依赖项,包括:
- 子 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.4</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