本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以使用 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 库的身份验证。
-
在
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>
-
将
<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、version 和 file 参数来发布另一个 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
或 pom.xml
中还必须有一个 pluginRepository
元素。以下示例从存储库中获取应用程序依赖关系和 Maven 插件。 CodeArtifact
<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 Project 网站上的以下主题: