本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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-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。
如果您尚未建立,請如所述在環境變數中建立並存放 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 --domain
my_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 專案網站上的下列主題: