

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置并使用 mvn
<a name="packages-maven-mvn"></a>

您可以使用 `mvn` 命令来运行 Maven 构建。您必须将 `mvn` 配置为使用程序包存储库，并提供用于身份验证的个人访问令牌（PAT）。

**Contents**
+ [从中获取依赖关系 CodeCatalyst](#mvn-fetch-dependencies)
+ [通过以下方式从外部软件包存储库获取软件包 CodeCatalyst](#mvn-install-public)
+ [将包发布到 CodeCatalyst](#mvn-publish-packages)
+ [发布第三方程序包](#publishing-third-party-packages)

## 从中获取依赖关系 CodeCatalyst
<a name="mvn-fetch-dependencies"></a>

`mvn`要配置为从 CodeCatalyst 存储库获取依赖项，必须编辑 Maven 配置文件`settings.xml`，也可以编辑项目的项目模型对象 (POM) 文件。POM 文件包含有关项目的信息以及 Maven 构建项目所需的配置信息，例如依赖项、构建目录、源目录、测试源目录、插件和目标。

**用于`mvn`从 CodeCatalyst 软件包存储库中获取依赖项**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 在项目的概述页面上，选择**程序包**。

1. 从程序包存储库列表中，选择您的程序包存储库。

1. 选择**连接到存储库**。

1. 在**连接到存储库**对话框中，从程序包管理器客户端列表中选择 **mvn**。

1. 您需要使用个人访问令牌 (PAT) `mvn` 进行身份验证 CodeCatalyst。如果您已有一个 PAT，则可以使用它。如果没有 PAT，您可以在此处创建一个。

   1. 选择**创建令牌**。

   1. 选择**复制**以复制您的 PAT。
**警告**  
关闭此对话框后，您将无法再次查看或复制您的 PAT。

1. 将包含存储库的配置文件添加到 `settings.xml` 文件。替换以下值。
**注意**  
如果通过控制台指令进行复制，则以下值将进行更新且不应更改。
   + *space\$1name*替换为您的 CodeCatalyst空间名称。
   + *proj\$1name*用您的 CodeCatalyst项目名称替换。
   + *repo\$1name*替换为你的 CodeCatalyst软件包存储库名称。

   ```
   <profiles>
     <profile>
       <id>repo_name</id>
       <activation>
           <activeByDefault>true</activeByDefault>
       </activation>
       <repositories>
           <repository>
             <id>repo_name</id>
             <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
           </repository>
       </repositories>
     </profile>
   </profiles>
   ```

1. 将服务器添加到 `settings.xml` 文件中的服务器列表。替换以下值。
**注意**  
如果通过控制台指令进行复制，则以下值将进行更新且不应更改。
   + *repo\$1name*替换为你的 CodeCatalyst软件包存储库名称。
   + *username*用您的 CodeCatalyst 用户名替换。
   + *PAT*用您的 CodeCatalyst PAT 替换。

   ```
   <servers>
     <server>
       <id>repo_name</id>
       <username>username</username>
       <password>PAT</password>
     </server>
   </servers>
   ```

1. （可选）在 `settings.xml` 文件中设置镜像，以捕获所有连接并将它们路由到您的存储库，而不是网关存储库。
**注意**  
如果通过控制台指令进行复制，则以下值将进行更新且不应更改。
   + *space\$1name*替换为您的 CodeCatalyst空间名称。
   + *proj\$1name*用您的 CodeCatalyst项目名称替换。
   + *repo\$1name*替换为你的 CodeCatalyst软件包存储库名称。

   ```
   <mirrors>
     <mirror>
       <id>repo_name</id>
       <name>repo_name</name>
       <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
       <mirrorOf>*</mirrorOf>
     </mirror>
   </mirrors>
   ```

**重要**  
可以在 `<id>` 元素中使用任何值，但必须与 `<server>` 和 `<repository>` 元素中的值相同。这样，就可以将指定的凭据包含在对的请求中 CodeCatalyst。

更改这些配置后，就可以构建项目了。

```
mvn compile
```

## 通过以下方式从外部软件包存储库获取软件包 CodeCatalyst
<a name="mvn-install-public"></a>

您可以通过存储库从公共存储库安装 Maven 软件包，方法是将其配置为与代表网关存储库的网关的上游连接。 CodeCatalyst从网关存储库安装的软件包会被提取并存储在您的存储 CodeCatalyst库中。

目前， CodeCatalyst 支持以下公共 Maven 软件包存储库。
+ maven-central-gateway
+ google-android-gateway
+ gradle-plugins-gateway
+ commonsware-gateway

**从公共 Maven 程序包存储库安装程序包**

1. 如果您还没有，请`mvn`按照中的步骤使用您的 CodeCatalyst软件包存储库进行配置[从中获取依赖关系 CodeCatalyst](#mvn-fetch-dependencies)。

1. 确保您的存储库已将要从中安装的网关存储库添加为上游连接。要查看添加了哪些上游源或要将网关存储库添加为上游源，请按照[添加上游存储库](packages-upstream-repositories-add.md)中的说明操作。

有关从上游存储库请求程序包的更多信息，请参阅[请求包含上游存储库的程序包版本](packages-upstream-repositories-request.md)。

## 将包发布到 CodeCatalyst
<a name="mvn-publish-packages"></a>

要将 Maven 包发布`mvn`到 CodeCatalyst 存储库，还必须编辑`~/.m2/settings.xml`和项目 POM。

**用于将包发布`mvn`到您的软件 CodeCatalyst 包存储库**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 在项目的概述页面上，选择**程序包**。

1. 从程序包存储库列表中，选择您的程序包存储库。

1. 选择**连接到存储库**。

1. 在**连接到存储库**对话框中，从程序包管理器客户端列表中选择 **mvn**。

1. 您需要使用个人访问令牌 (PAT) `mvn` 进行身份验证 CodeCatalyst。如果您已有一个 PAT，则可以使用它。如果没有 PAT，您可以在此处创建一个。

   1. 选择**创建令牌**。

   1. 选择**复制**以复制您的 PAT。
**警告**  
关闭此对话框后，您将无法再次查看或复制您的 PAT。

1. 在本地机器上使用 PAT 配置环境变量。您将在 `setting.xml` 文件中使用此环境变量。

   ```
   export CODECATALYST_ARTIFACTS_TOKEN=your_PAT
   ```

1. 在 `settings.xml` 中添加一个引用 `CodeCatalyst_ARTIFACTS_TOKEN` 环境变量的 `<servers>` 部分，以便 Maven 可在 HTTP 请求中传递令牌。

   ```
   <settings>
   ...
       <servers>
           <server>
               <id>repo-name</id>
               <username>username</username>
               <password>${env.CodeCatalyst_ARTIFACTS_TOKEN}</password>
           </server>
       </servers>
   ...
   </settings>
   ```

1. 将 `<distributionManagement>` 部分添加到项目的 `pom.xml`。

   ```
   <project>
   ...
        <distributionManagement>
            <repository>
                <id>repo_name</id>
                <name>repo_name</name>
                <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
            </repository>
        </distributionManagement>
   ...
   </project>
   ```

更改这些配置后，就可以开始构建项目并将项目发布到指定的存储库。

```
mvn deploy
```

您可以在 CodeCatalyst 控制台中导航到您的软件包存储库，以检查软件包是否已成功发布。

## 发布第三方程序包
<a name="publishing-third-party-packages"></a>

您可以使用将第三方 Maven 包发布到 CodeCatalyst 存储库。`mvn deploy:deploy-file`这对于想要发布程序包且只有 JAR 文件且无权访问程序包源代码或 POM 文件的用户很有用。

`mvn deploy:deploy-file` 命令会根据命令行中传递的信息生成 POM 文件。

首先，创建一个 PAT（如果您没有 PAT）。

**创建个人访问令牌（PAT）**

1. 在顶部菜单栏中，选择您的个人资料徽章，然后选择**我的设置**。
**提示**  
您还可以通过转到项目或空间的成员页面，然后从成员列表中选择您的姓名，找到您的用户个人资料。

1. 在 **PAT 名称**中，为您的 PAT 输入描述性名称。

1. 在**到期日期**中，保留默认日期，或者选择日历图标以自定义日期。到期日期默认为从当前日期起一年后。

1. 选择**创建**。

   当为源存储库选择**克隆存储库**时，也可以创建此令牌。

1. 将 PAT 密钥保存在安全位置。
**重要**  
PAT 密钥仅显示一次。关闭窗口后将无法再检索该密钥。

**发布第三方 Maven 程序包**

1. 创建 `~/.m2/settings.xml` 文件并输入以下内容：

   ```
   <settings>
       <servers>
           <server>
               <id>repo_name</id>
               <username>username</username>
               <password>PAT}</password>
           </server>
       </servers>
   </settings>
   ```

1. 运行 `mvn deploy:deploy-file` 命令：

   ```
   mvn deploy:deploy-file -DgroupId=commons-cli          \
   -DartifactId=commons-cli       \
   -Dversion=1.4                  \
   -Dfile=./commons-cli-1.4.jar   \
   -Dpackaging=jar                \
   -DrepositoryId=repo-name      \
   -Durl=https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/
   ```
**注意**  
前面的示例发布 `commons-cli 1.4`。修改 groupID、artifactID、version 和 file 参数来发布另一个 JAR。

这些说明基于 *Apache Maven* 文档中关于[ JARs 将第三方部署到远程存储库的指南](https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html)中的示例。

 有关更多信息，请参阅 Apache Maven Project 网站上的以下主题：
+  [设置多个存储库](https://maven.apache.org/guides/mini/guide-multiple-repositories.html) 
+  [设置参考](https://maven.apache.org/settings.html) 
+  [分配管理](https://maven.apache.org/pom.html#Distribution_Management) 
+  [配置文件](https://maven.apache.org/pom.html#Profiles) 