使用来自 Google Maven 存储库的包

Azure DevOps 服务 |Azure DevOps Server |Azure DevOps Server 2022

借助 Azure Artifacts,开发人员可以启用上游源来使用来自公共注册表(如 Google Maven 存储库)的包。 启用上游源后,Azure Artifacts 会自动保存具有源和上游读取者(参与者)或更高权限的用户安装到源中的任何包的副本。 Azure Artifacts还支持其他 Maven 上游源,包括 Maven Central、Gradle 插件和 JitPack。

先决条件

产品 要求
Azure DevOps - Azure DevOps 组织化
- Azure DevOps project

创建信息流

如果你已拥有 Azure Artifacts 源,请跳到下一节。 否则,请按照以下步骤新建一个:

  1. 登录到Azure DevOps并导航到项目。

  2. 选择“工件”,然后选择“创建源”

  3. 输入订阅名称,设置可见性来控制谁能查看包,然后选择订阅范围。 选择“包含来自常见公共源的包”以启用上游源并允许从公共注册表使用包。

  4. 选择“创建”以完成操作。

添加 Google Maven 存储库上游源

如果你在创建源时选择了“包含来自常见公共源的包”,那么 Google Maven 存储库应该已经添加为上游源。 如果没有,可以按照以下步骤手动添加它:

  1. 登录到Azure DevOps组织并导航到项目。

  2. 选择工件,然后选择右上角的齿轮图标以打开“提要设置”

  3. 选择 上游源,然后选择“ 添加上游”。

  4. 选择“公共源”,然后选择“Google Maven 存储库”(https://maven.google.com/web/index.html)。

  5. 选择 “添加”,然后选择右上角的 “保存 ”以保存更改。

保存来自 Google Maven 存储库的包

在开始之前,请确保 Maven 项目已配置为连接到 Azure Artifacts 源。 如果尚未执行此操作,请按照项目设置中的说明设置 Maven 项目并通过你的源进行身份验证。

以下示例演示如何从 Google Maven 存储库安装开源标识框架 Multipaz

  1. 导航到 Google Maven 存储库 https://maven.google.com

  2. 搜索 Multipaz 包: org.multipaz,然后选择要使用的包和版本。

  3. 复制包的 组 ID项目 ID版本 值。

  4. 将以下代码片段中的占位符替换为刚刚复制的值:

    <dependency>
        <groupId>GROUP_ID</groupId>
        <artifactId>ARTIFACT_ID</artifactId>
        <version>VERSION</version>
    </dependency>
    
  5. 打开 pom.xml 文件,将依赖项代码片段粘贴到 <dependencies> 分区中,然后保存文件。

  6. pom.xml 文件所在的同一路径运行以下命令以安装依赖项:

    mvn install
    

命令完成后,Maven 会通过 Azure Artifacts 源来解析依赖项。 如果数据源中尚不存在包,Azure Artifacts 会从 Google Maven 存储库中检索包并存储一份副本。 后续安装将包直接从 Azure Artifacts 而不是公共注册表下载。

注意

你必须具有源和上游读取者(参与者)角色或更高权限才能保存来自上游的包。 有关更多详细信息,请参阅 源角色和权限

查看保存的包

从上游源安装包后,您可以确认 Azure Artifacts 将副本保存到您的 feed 中:

  1. 登录到Azure DevOps并导航到项目。

  2. 选择项目,然后从下拉菜单中选择源。

  3. 从“ ”下拉菜单中,选择 Google Maven 存储库 以查看从此上游保存的包。

  4. 你在上一节中安装的 Multipaz 包现在即可在你的源中使用。 运行 mvn install 命令时,Azure Artifacts自动保存副本。

    屏幕截图显示 Google Maven 存储库中的 Multipaz 包已保存到源中。

提示

如果 Maven 未下载所有依赖项,请从项目目录运行以下命令以重新生成项目文件并下载源和 Javadocs: mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true