管理 Java 软件包

本页介绍了如何添加、查看和删除 Java 软件包。

如果您想使用 sbt 作为 Scala 和 Java 的构建工具,而不是使用 Maven 或 Gradle,可以使用社区创建的 sbt 插件。本文档未介绍 Scala 客户端的配置或使用。

准备工作

  1. 如果目标代码库不存在,请创建新代码库
  2. 验证您是否拥有访问代码库所需的权限
  3. 验证您是否已配置身份验证。如果您使用的是访问令牌,请确保在连接到代码库之前先刷新该令牌。
  4. (可选)为 gcloud 命令配置默认值

所需的角色

如需获得管理软件包所需的权限,请让管理员向您授予代码库的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

添加软件包

仓库模式:标准

如需将软件包添加到代码库,请执行以下操作:

Maven

使用 mvn deploymvn 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 查看软件包和软件包版本,请执行以下操作:

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 点击一个软件包以查看它的版本。

gcloud

如需列出代码库中的软件包,请运行以下命令:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

地点

  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION是 单区域或多区域 location。 使用此标志可以查看特定位置的代码库。如果您 配置了默认位置,则可以省略此标志来使用 默认值。

如需查看软件包的版本,请运行以下命令:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

其中

  • PACKAGE 是软件包的 ID 或软件包的完全限定标识符。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • 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

  1. 在项目 pom.xml 文件中声明您要下载的软件包。以下示例会将软件包 artifact 的 1.0 版声明为依赖项。

    <dependencies>
        <dependency>
            <groupId>group</groupId>
            <artifactId>artifact</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
    

    如需详细了解 Maven 依赖项,请参阅 Maven 依赖项简介依赖项参考文档

  2. 构建 Java 项目。

    mvn compile
    

Gradle

  1. 在项目 build.gradle 文件中声明您要下载的软件包。以下示例会将软件包 artifact 的 1.0 版声明为外部编译依赖项。

    如需详细了解 Gradle 依赖项,请参阅 Gradle 文档

    dependencies {
        compile group: 'group', name: 'artifact', version: '1.0'
    }
    
  2. 构建 Java 项目。

    gradle build
    

对于标准代码库,您可以直接从代码库下载软件包。

对于远程仓库,您需要下载软件包的缓存副本及其 依赖项如果缓存副本不存在,则远程仓库会下载该副本 来自上游源的软件包并进行缓存,然后再将其提供给您。 您可以验证远程仓库是否从 向上游来源查看代码库中的软件包列表

对于虚拟代码库,Artifact Registry 会搜索上游代码库以查找请求的软件包。

  • 如果缓存副本不存在,上游远程仓库将下载并缓存请求的软件包。虚拟代码库仅传送所请求的 而不会存储它们
  • 如果您请求的版本在多个上游代码库中都有,Artifact Registry 会根据为虚拟代码库配置的优先级设置选择要使用的上游代码库。

例如,假设某个虚拟代码库具有以下优先级设置 对于上游代码库:

  • main-repo:优先级设置为“100
  • secondary-repo1:优先级设置为 80
  • secondary-repo2:优先级设置为 80
  • test-repo:优先级设置为 20

main-repo 具有最高优先级值,因此虚拟代码库 始终会先搜索该数据。

secondary-repo1secondary-repo2 的优先级均设为 80。如果请求的软件包未在 main-repo 中找到,Artifact Registry 接下来会搜索这些代码库。由于它们的优先级值相同 Artifact Registry 可以选择从任一仓库提供软件包 如果两个版本都提供相应的版本

test-repo 具有最低优先级值,如果其他上游代码库都没有存储工件,则会提供存储的工件。

删除软件包和版本

仓库模式:标准、远程

您可以删除软件包及其所有版本,也可以删除特定版本。

  • 删除文件包后,您无法撤消此操作。
  • 对于远程仓库,系统只会删除软件包的缓存副本。通过 上游来源不受影响。如果您删除了缓存的软件包,那么当代码库下次收到针对同一软件包版本的请求时,Artifact Registry 会再次下载并缓存该软件包。

在删除软件包或软件包版本之前,请确认您已在其中告知或解决任何重要依赖项。

如需删除软件包,请按如下所述操作:

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 选择要删除的软件包。

  4. 点击删除

  5. 在确认对话框中,点击删除

gcloud

运行以下命令:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

地点

  • PACKAGE 是代码库中的软件包名称。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION是 单区域或多区域 location。 使用此标志可查看特定位置的代码库。如果您 配置了默认位置,则可以省略此标志来使用 默认值。
  • --async 会立即返回结果,而无需等待正在进行的操作完成。

如需删除软件包的版本,请按如下所述操作:

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 在代码库列表中,点击相应代码库。

    软件包页面列出代码库中的软件包。

  3. 点击一个软件包以查看它的版本。

  4. 选择您要删除的版本。

  5. 点击删除

  6. 在确认对话框中,点击删除

gcloud

运行以下命令:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

地点

  • PACKAGE 是代码库中的软件包名称。
  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • LOCATION是 单区域或多区域 location。 使用此标志可查看特定位置的代码库。如果您 配置了默认位置,则可以省略此标志来使用 默认值。
  • --async 会立即返回结果,而无需等待正在进行的操作完成。

后续步骤