管理 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 命令将软件包上传到代码库。

查看软件包和版本

仓库模式:标准、远程

To view packages and package versions using the Google Cloud console or gcloud:

Console

  1. Open the Repositories page in the Google Cloud console.

    打开“代码库”页面

  2. In the repository list, click the appropriate repository.

    The Packages page lists the packages in the repository.

  3. Click a package to view versions of the package.

gcloud

To list packages in a repository, run the following command:

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

Where

  • REPOSITORY is the name of the repository. If you configured a default repository, you can omit this flag to use the default.
  • LOCATION is a regional or multi-regional location. Use this flag to view repositories in a specific location. If you configured a default location, you can omit this flag to use the default.

To view versions of a package, run the following command:

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

Where

  • PACKAGE is the ID of the package or fully qualified identifier for the package.
  • REPOSITORY is the name of the repository. If you configured a default repository, you can omit this flag to use the default.
  • LOCATION is a regional or multi-regional location. Use this flag to view repositories in a specific location. If you configured a default location, you can omit this flag to use the default.

对于远程仓库,返回的列表应包含所有直接和 传递依赖项

列出文件

仓库模式:标准、远程

您可以列出代码库中的文件、指定软件包的所有版本中的文件,或软件包的特定版本中的文件。

对于以下所有命令,您都可以通过向命令添加 --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 会再次下载并缓存该软件包。

Before you delete a package or package version, verify that any you have communicated or addressed any important dependencies on it.

To delete a package:

Console

  1. Open the Repositories page in the Google Cloud console.

    打开“代码库”页面

  2. In the repository list, click the appropriate repository.

    The Packages page lists the packages in the repository.

  3. Select the package that you want to delete.

  4. Click DELETE.

  5. In the confirmation dialog box, click DELETE.

gcloud

Run the following command:

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

Where

  • PACKAGE is the name of the package in the repository.
  • REPOSITORY is the name of the repository. If you configured a default repository, you can omit this flag to use the default.
  • LOCATION is a regional or multi-regional location. Use this flag to view repositories in a specific location. If you configured a default location, you can omit this flag to use the default.
  • --async Return immediately, without waiting for the operation in progress to complete.

To delete versions of a package:

Console

  1. Open the Repositories page in the Google Cloud console.

    打开“代码库”页面

  2. In the repository list, click the appropriate repository.

    The Packages page lists the packages in the repository.

  3. Click a package to view versions of that package.

  4. Select versions that you want to delete.

  5. Click DELETE.

  6. In the confirmation dialog box, click DELETE.

gcloud

Run the following command:

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

Where

  • PACKAGE is the name of the package in the repository.
  • REPOSITORY is the name of the repository. If you configured a default repository, you can omit this flag to use the default.
  • LOCATION is a regional or multi-regional location. Use this flag to view repositories in a specific location. If you configured a default location, you can omit this flag to use the default.
  • --async returns immediately, without waiting for the operation in progress to complete.

后续步骤