CodeArtifact 與 mvn 搭配使用 - CodeArtifact

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

CodeArtifact 與 mvn 搭配使用

您可以使用 mvn命令來執行 Maven 建置。本節說明如何設定 mvn 以使用 CodeArtifact 儲存庫。

擷取相依性

若要設定 mvn以從 CodeArtifact 儲存庫擷取相依性,您必須編輯 Maven 組態檔案 settings.xml、 和選擇性的專案 POM。

  1. 如果您尚未建立,請如所述在環境變數中建立並存放 CodeArtifact 身分驗證權杖使用環境變數傳遞身分驗證權杖,以設定對 CodeArtifact 儲存庫的身分驗證。

  2. settings.xml(通常位於 ~/.m2/settings.xml) 中,新增參照CODEARTIFACT_AUTH_TOKEN環境變數的<servers>區段,讓 Maven 在HTTP請求中傳遞權杖。

    <settings> ... <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> ... </settings>
  3. <repository>元素中新增 CodeArtifact 儲存庫的URL端點。您可以在 settings.xml或專案的 POM 檔案中執行此操作。

    您可以使用 get-repository-endpoint AWS CLI 命令來擷取儲存庫的端點。

    例如,具有名為 的儲存庫 my_repo 在名為 的網域內 my_domain,命令如下所示:

    aws codeartifact get-repository-endpoint --domain my_domain --repository my_repo --format maven

    get-repository-endpoint 命令將傳回儲存庫端點:

    url 'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/'
    注意

    若要使用雙堆疊端點,請使用 codeartifact.region.on.aws端點。

    將儲存庫端點新增至 settings.xml ,如下所示。

    <settings> ... <profiles> <profile> <id>default</id> <repositories> <repository> <id>codeartifact</id> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>default</activeProfile> </activeProfiles> ... </settings>

    或者,您可以將 <repositories>區段新增至專案POM檔案,以僅用於 CodeArtifact 該專案。

    <project> ... <repositories> <repository> <id>codeartifact</id> <name>codeartifact</name> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> </repository> </repositories> ... </project>
重要

您可以在 <id>元素中使用任何值,但在 <server><repository>元素中必須相同。這可讓指定的憑證包含在對 的請求中 CodeArtifact。

進行這些組態變更之後,您可以建置專案。

mvn compile

Maven 會記錄下載至主控台URL的所有相依性。

[INFO] ------------------< com.example.example:myapp >------------------- [INFO] Building myapp 1.0 [INFO] --------------------------------[ jar ]--------------------------------- Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.pom Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.pom (11 kB at 3.9 kB/s) Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom (68 kB at 123 kB/s) Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.jar Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.jar (54 kB at 134 kB/s)

發佈成品

若要將 Maven 成品發佈mvn至 CodeArtifact 儲存庫,您也必須編輯 ~/.m2/settings.xml和專案 POM。

  1. 如果您尚未建立,請如所述在環境變數中建立並存放 CodeArtifact 身分驗證權杖使用環境變數傳遞身分驗證權杖,以設定對 CodeArtifact 儲存庫的身分驗證。

  2. <servers>區段新增至 ,settings.xml並參考CODEARTIFACT_AUTH_TOKEN環境變數,讓 Maven 在HTTP請求中傳遞權杖。

    <settings> ... <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> ... </settings>
  3. <distributionManagement>區段新增至專案的 pom.xml

    <project> ... <distributionManagement> <repository> <id>codeartifact</id> <name>codeartifact</name> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> </repository> </distributionManagement> ... </project>

進行這些組態變更之後,您可以建置專案並將其發佈至指定的儲存庫。

mvn deploy

使用 list-package-versions檢查套件是否已成功發佈。

aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format maven \ --namespace com.company.framework --package my-package-name

輸出範例:

{ "defaultDisplayVersion": null, "format": "maven", "namespace": "com.company.framework", "package": "my-package-name", "versions": [ { "version": "1.0", "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC", "status": "Published" } ] }

發佈第三方成品

您可以使用 將第三方 Maven 成品發佈至 CodeArtifact 儲存庫mvn deploy:deploy-file。這對於想要發佈成品且只有JAR檔案且無法存取套件原始程式碼或POM檔案的使用者很有幫助。

mvn deploy:deploy-file 命令會根據在命令列中傳遞的資訊產生POM檔案。

發佈第三方 Maven 成品
  1. 如果您尚未建立,請如所述在環境變數中建立並存放 CodeArtifact 身分驗證權杖使用環境變數傳遞身分驗證權杖,以設定對 CodeArtifact 儲存庫的身分驗證。

  2. 建立具有下列內容~/.m2/settings.xml的檔案:

    <settings> <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> </settings>
  3. 執行 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=codeartifact \ -Durl=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/repo-name/
    注意

    上述範例會發佈 commons-cli 1.4。修改 groupId、 artifactID、版本和檔案引數,以發佈不同的 JAR。

這些指示是以指南中從 Apache Maven 文件將第三方部署JARs到遠端儲存庫的範例為基礎。

限制 Maven 相依性下載至 CodeArtifact 儲存庫

如果套件無法從設定的儲存庫擷取,依預設,mvn命令會從 Maven Central 擷取套件。將 mirrors 元素新增至 settings.xml ,讓 mvn一律使用您的 CodeArtifact 儲存庫。

<settings> ... <mirrors> <mirror> <id>central-mirror</id> <name>CodeArtifact Maven Central mirror</name> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ... </settings>

如果您新增mirrors元素,則也必須在 settings.xml或 中具有 pluginRepository元素pom.xml。下列範例會從 CodeArtifact 儲存庫擷取應用程式相依性和 Maven 外掛程式。

<settings> ... <profiles> <profile> <pluginRepositories> <pluginRepository> <id>codeartifact</id> <name>CodeArtifact Plugins</name> <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> ... </settings>

下列範例會從 CodeArtifact 儲存庫擷取應用程式相依性,並從 Maven Central 擷取 Maven 外掛程式。

<profiles> <profile> <id>default</id> ... <pluginRepositories> <pluginRepository> <id>central-plugins</id> <name>Central Plugins</name> <url>https://repo.maven.apache.org/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> .... </profile> </profiles>

Apache Maven 專案資訊

如需 Maven 的詳細資訊,請參閱 Apache Maven 專案網站上的下列主題: