本页介绍了如何添加、查看和删除 Java 软件包。
如果您想使用 sbt 作为 Scala 和 Java 的构建工具,而不是使用 Maven 或 Gradle,可以使用社区创建的 sbt 插件。本文档未介绍 Scala 客户端的配置或使用。
准备工作
- 如果目标代码库不存在,请创建新代码库。
- 验证您是否拥有访问代码库所需的权限。
- 验证您是否已配置身份验证。如果您使用的是访问令牌,请确保在连接到代码库之前先刷新该令牌。
- (可选)为 gcloud 命令配置默认值。
所需的角色
如需获得管理软件包所需的权限,请让管理员向您授予代码库的以下 IAM 角色:
-
查看软件包或软件包中的文件:Artifact Registry Reader (
roles/artifactregistry.reader
) -
下载或安装软件包:
Artifact Registry 读取者 (
roles/artifactregistry.reader
) -
将软件包添加到代码库:
Artifact Registry Writer (
roles/artifactregistry.writer
) -
删除软件包:
Artifact Registry Repository Administrator (
roles/artifactregistry.repoAdmin
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
添加软件包
仓库模式:标准
如需将软件包添加到代码库,请执行以下操作:
Maven
使用 mvn deploy
和 mvn release
将软件包添加到代码库。
若要成功部署一个引用父项目的 Maven 项目,该项目的核心扩展文件中必须包含 Artifact Registry Wagon 提供商,如扩展说明中所述。
使用 mvn deploy:deploy-file
上传在 Maven 之外构建的工件。
例如,此示例命令会将 example/external.jar
及其项目文件 example/pom.xml
部署到代码库 us-central1-maven.pkg.dev/my-project/my-repo
中
mvn deploy:deploy-file \
-Durl=artifactregistry://us-central1-maven.pkg.dev/my-project/my-repo \
-DpomFile=example/pom.xml -Dfile=example/external.jar
如需配置与 Cloud Build 的集成,请参阅与 Cloud Build 集成。
Gradle
若要成功发布到代码库,您的 build.gradle
文件必须包含发布平台部分,用于定义要上传的文件。
使用 gradle publish
命令将软件包上传到代码库。
查看软件包和版本
仓库模式:标准、远程
如需使用 Google Cloud 控制台或 gcloud
查看软件包和软件包版本,请执行以下操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
点击一个软件包以查看它的版本。
gcloud
如需列出代码库中的软件包,请运行以下命令:
gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]
地点
- REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
- LOCATION是 单区域或多区域 location。 使用此标志可以查看特定位置的代码库。如果您 配置了默认位置,则可以省略此标志来使用 默认值。
如需查看软件包的版本,请运行以下命令:
gcloud artifacts versions list --package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION]
其中
对于远程仓库,返回的列表应包含所有直接和 传递依赖项
列出文件
仓库模式:标准、远程
您可以列出代码库中的文件、指定软件包的所有版本中的文件,或软件包的特定版本中的文件。
对于以下所有命令,您都可以通过向命令添加 --limit
标志来设置要返回的文件数量上限。
如需在配置默认值时列出默认项目、代码库和位置中的所有文件,请运行以下命令:
gcloud artifacts files list
如需列出指定项目、代码库和位置中的文件,请运行以下命令:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION
如需列出特定软件包的所有版本的文件,请执行以下操作:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE
如需列出特定软件包版本的文件,请执行以下操作:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE \
--version=VERSION
替换以下值:
LOCATION
: 单区域或多区域 代码库的位置。PROJECT
:您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (`:`),请参阅网域级项目。REPOSITORY
:映像所在代码库的名称 。PACKAGE
:软件包的名称。VERSION
:软件包的版本。
示例
请考虑以下软件包信息:
- 项目:
my-project
- 仓库:
my-repo
- 代码库位置:
us-west1
- 包裹:
my-app
以下命令将列出 my-repo
中
默认项目中的位置 us-west1
:
gcloud artifacts files list \
--location=us-west1 \
--repository=my-repo
1.0
中的文件。
gcloud artifacts files list \
--project=my-project \
--location=us-west1 \
--repository=my-repo \
--package=my-app \
--version=1.0
下载软件包
代码库模式:标准、远程、虚拟
要在构建过程中下载工件,请将工件声明为依赖项。
Maven
Gradle
在项目
build.gradle
文件中声明您要下载的软件包。以下示例会将软件包artifact
的 1.0 版声明为外部编译依赖项。如需详细了解 Gradle 依赖项,请参阅 Gradle 文档。
dependencies { compile group: 'group', name: 'artifact', version: '1.0' }
构建 Java 项目。
gradle build
对于标准代码库,您可以直接从代码库下载软件包。
对于远程仓库,您需要下载软件包的缓存副本及其 依赖项如果缓存副本不存在,则远程仓库会下载该副本 来自上游源的软件包并进行缓存,然后再将其提供给您。 您可以验证远程仓库是否从 向上游来源查看代码库中的软件包列表。
对于虚拟代码库,Artifact Registry 会搜索上游代码库以查找请求的软件包。
- 如果缓存副本不存在,上游远程仓库将下载并缓存请求的软件包。虚拟代码库仅传送所请求的 而不会存储它们
- 如果您请求的版本在多个上游代码库中都有,Artifact Registry 会根据为虚拟代码库配置的优先级设置选择要使用的上游代码库。
例如,假设某个虚拟代码库具有以下优先级设置 对于上游代码库:
main-repo
:优先级设置为“100
”secondary-repo1
:优先级设置为80
。secondary-repo2
:优先级设置为80
。test-repo
:优先级设置为20
。
main-repo
具有最高优先级值,因此虚拟代码库
始终会先搜索该数据。
secondary-repo1
和 secondary-repo2
的优先级均设为 80
。如果请求的软件包未在 main-repo
中找到,Artifact Registry 接下来会搜索这些代码库。由于它们的优先级值相同
Artifact Registry 可以选择从任一仓库提供软件包
如果两个版本都提供相应的版本
test-repo
具有最低优先级值,如果其他上游代码库都没有存储工件,则会提供存储的工件。
删除软件包和版本
仓库模式:标准、远程
您可以删除软件包及其所有版本,也可以删除特定版本。
- 删除文件包后,您无法撤消此操作。
- 对于远程仓库,系统只会删除软件包的缓存副本。通过 上游来源不受影响。如果您删除了缓存的软件包,那么当代码库下次收到针对同一软件包版本的请求时,Artifact Registry 会再次下载并缓存该软件包。
在删除软件包或软件包版本之前,请确认您已在其中告知或解决任何重要依赖项。
如需删除软件包,请按如下所述操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
选择要删除的软件包。
点击删除。
在确认对话框中,点击删除。
gcloud
运行以下命令:
gcloud artifacts packages delete PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] [--async]
地点
如需删除软件包的版本,请按如下所述操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,点击相应代码库。
软件包页面列出代码库中的软件包。
点击一个软件包以查看它的版本。
选择您要删除的版本。
点击删除。
在确认对话框中,点击删除。
gcloud
运行以下命令:
gcloud artifacts versions delete VERSION \
--package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] \
[--async]
地点