

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 deps.edn 使用 CodeArtifact
<a name="maven-deps"></a>

您可以使用 `deps.edn`搭配 `clj` 來管理 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，請使用 為您的專案產生 POM xml`clj -Spom`。

1. 在您的`deps.edn`組態檔案中，新增與 Maven 的伺服器 ID 相符的儲存庫`settings.xml`。

   ```
   :mvn/repos {
     "clojars" nil
     "central" nil
     "codeartifact" {:url "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/"}
   }
   ```
**注意**  
`tools.deps` 保證會先檢查 Maven 程式庫的 `central`和 `clojars` 儲存庫。之後，`deps.edn`將檢查 中列出的其他儲存庫。
為了防止直接從 Clojar 和 Maven Central 下載，`central`且 `clojars` 需要設定為 `nil`。

   請確定您在 環境變數中有 CodeArtifact Auth 權杖 （請參閱 [使用 環境變數傳遞身分驗證字符](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 中的[修改預設儲存庫](https://clojure.org/reference/deps_and_cli#_modifying_the_default_repositories)和 CLI 參考原理。 **