

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

# 通过 deps.edn 来使用 CodeArtifact
<a name="maven-deps"></a>

您可以使用包含 `clj` 命令的 `deps.edn` 来管理 Clojure 项目的依赖项。本节说明如何配置 `deps.edn` 来使用 CodeArtifact 存储库。

**Topics**
+ [提取依赖项](#fetching-dependencies-deps)
+ [发布构件](#publishing-artifacts-deps)

## 提取依赖项
<a name="fetching-dependencies-deps"></a>

要将 `Clojure` 配置为从 CodeArtifact 存储库提取依赖项，必须编辑 Maven 配置文件 `settings.xml`。

1. 在 `settings.xml` 中，添加一个引用 `CODEARTIFACT_AUTH_TOKEN` 环境变量的 `<servers>` 部分，以便 Clojure 可在 HTTP 请求中传递令牌。
**注意**  
Clojure 预计 settings.xml 文件位于 `~/.m2/settings.xml`。如果该文件在其他地方，则在此位置创建该文件。

   ```
   <settings>
   ...
       <servers>
           <server>
               <id>codeartifact</id>
               <username>aws</username>
               <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
           </server>
       </servers>
   ...
   </settings>
   ```

1. 如果您的项目还没有 POM xml 文件，请使用 `clj -Spom` 生成该文件。

1. 在您的 `deps.edn` 配置文件中，添加与 Maven `settings.xml` 中的服务器 ID 相匹配的存储库。

   ```
   :mvn/repos {
     "clojars" nil
     "central" nil
     "codeartifact" {:url "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/"}
   }
   ```
**注意**  
`tools.deps` 保证首先检查 `central` 和 `clojars` 存储库中是否有 Maven 库。之后，系统会检查 `deps.edn` 中列出的其他存储库。
为了防止直接从 Clojars 和 Maven Central 下载，`central` 和 `clojars` 需要设置为 `nil`。

   确保环境变量中有 CodeArtifact 身份验证令牌（请参见[使用环境变量传递身份验证令牌](tokens-authentication.md#env-var)）。在发生这些更改之后构建程序包时，`deps.edn` 将从 CodeArtifact 中提取依赖项。
**注意**  
要使用双堆栈端点，请使用 `codeartifact.region.on.aws` 端点。

## 发布构件
<a name="publishing-artifacts-deps"></a>

1. 更新 Maven 设置和 `deps.edn`，将 CodeArtifact 添加为 Maven 认可的服务器（请参见[提取依赖项](#fetching-dependencies-deps)）。您可以使用诸如 [deps-deploy](https://github.com/slipset/deps-deploy) 之类的工具将构件上传到 CodeArtifact。

1. 在 `build.clj` 中，添加一个 `deploy` 任务，将所需的构件上传到先前设置的 `codeartifact` 存储库。

   ```
   (ns build
   (:require [deps-deploy.deps-deploy :as dd]))
   
   (defn deploy [_]
     (dd/deploy {:installer :remote
             :artifact "PATH_TO_JAR_FILE.jar"
             :pom-file "pom.xml" ;; pom containing artifact coordinates
             :repository "codeartifact"}))
   ```

1. 通过运行以下命令来发布构件：`clj -T:build deploy`

有关修改默认存储库的更多信息，请参阅**《Clojure Deps 和 CLI 参考依据》中的[修改默认存储库](https://clojure.org/reference/deps_and_cli#_modifying_the_default_repositories)。