本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以使用 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_domain 的網域中,使用名為 my_repo
的儲存庫時,命令如下: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 專案網站上的這些主題: