本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 CodeArtifact 與 mvn 搭配使用
您可以使用 mvn命令來執行 Maven 組建。本節說明如何設定 mvn 以使用 CodeArtifact 儲存庫。
擷取相依性
若要mvn設定 從 CodeArtifact 儲存庫擷取相依性,您必須編輯 Maven 組態檔案settings.xml、 和選擇性的專案 POM。
如果您尚未建立並存放 CodeArtifact 驗證字符到環境變數,如中所述使用 環境變數傳遞身分驗證字符,以設定 CodeArtifact 儲存庫的身分驗證。
-
在
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> -
在
<repository>元素中新增 CodeArtifact 儲存庫的 URL 端點。您可以在settings.xml或專案的 POM 檔案中執行此操作。您可以使用
get-repository-endpointAWS CLI 命令來擷取儲存庫的端點。例如,在名為
my_domain 的網域中,使用名為 my_repo的儲存庫時,命令如下:aws codeartifact get-repository-endpoint --domain my_domain --repository my_repo --format mavenget-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。
如果您尚未建立並存放 CodeArtifact 驗證字符到環境變數,如中所述使用 環境變數傳遞身分驗證字符,以設定 CodeArtifact 儲存庫的身分驗證。
-
將
<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> -
將
<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 --domainmy_domain--domain-owner111122223333--repositorymy_repo--formatmaven\ --namespacecom.company.framework--packagemy-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 成品
如果您尚未建立並存放 CodeArtifact 驗證字符到環境變數,如中所述使用 環境變數傳遞身分驗證字符,以設定 CodeArtifact 儲存庫的身分驗證。
-
建立具有下列內容
~/.m2/settings.xml的檔案:<settings> <servers> <server> <id>codeartifact</id> <username>aws</username> <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers> </settings> -
執行
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 專案網站上的這些主題: