包:Maven 身份验证
Azure DevOps Services
在当前用户的 Azure Artifacts 文件中为源和外部 Maven 存储库settings.xml凭据。
YAML 代码片段
# Provides credentials for Azure Artifacts feeds and external Maven repositories.
- task: MavenAuthenticate@0
#inputs:
#artifactsFeeds: MyFeedInOrg1, MyFeedInOrg2 # Optional
#mavenServiceConnections: serviceConnection1, serviceConnection2 # Optional
参数
| 参数 | 说明 |
|---|---|
artifactsFeeds我的源 (下面选择) |
(可选) 以逗号分隔的源名称Azure Artifacts Maven 进行身份验证。 如果只需要对外部 maven 存储库进行身份验证,请保留此字段空白。 |
mavenServiceConnections来自外部组织的源 |
(可选) 外部组织的 Maven 服务连接名称的逗号分隔列表,以使用 Maven 进行身份验证。 如果只需对源Azure Artifacts身份验证,则此字段留空。 |
示例
对组织内部的 Maven 源进行身份验证
本示例对组织中两个Azure Artifacts源进行身份验证。
任务定义
- task: MavenAuthenticate@0
displayName: 'Maven Authenticate'
inputs:
artifactsFeeds: MyFeedInOrg1,MyFeedInOrg2
MavenAuthenticate 任务更新代理用户的 .m2 {user.home}/.m2/settings.xml 目录中settings.xml文件,以在 元素中添加两个 <servers> 条目。
settings.xml
<servers>
<server>
<id>MyFeedInOrg1</id>
<username>AzureDevOps</username>
<password>****</password>
</server>
<server>
<id>MyFeedInOrg2</id>
<username>AzureDevOps</username>
<password>****</password>
</server>
</servers>
应该将项目的 中的pom.xml<id>存储库设置为与任务中指定的名称相同,使 Maven 能够正确对任务进行身份验证。
pom.xml
Project范围的源
<repository>
<id>MyFeedInOrg1</id>
<url>https://pkgs.dev.azure.com/OrganzationName/ProjectName/_packaging/MyProjectScopedFeed1/Maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
组织范围的源
<repository>
<id>MyFeedInOrg1</id>
<url>https://pkgs.dev.azure.com/OrganzationName/_packaging/MyOrgScopedFeed1/Maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
源Artifacts URL 可能包含项目,也可能不包含该项目。 项目范围源的 URL 必须包含项目,组织范围的源的 URL 不得包含该项目。 了解详细信息。
对组织外部的 Maven 源进行身份验证。
本示例对两个外部 Maven 存储库进行身份验证。
任务定义
- task: MavenAuthenticate@0
displayName: 'Maven Authenticate'
inputs:
MavenServiceConnections: central,MavenOrg
MavenAuthenticate 任务settings.xml代理用户的 .m2 {user.home}/.m2/settings.xml 目录中存在的文件,以在 元素中添加两个 <servers> 条目。
settings.xml
<servers>
<server>
<id>central</id>
<username>centralUsername</username>
<password>****</password>
</server>
<server>
<id>MavenOrg</id>
<username>mavenOrgUsername</username>
<password>****</password>
</server>
</servers>
应该将项目的 中的pom.xml<id>存储库设置为与任务中指定的名称相同,使 Maven 能够正确对任务进行身份验证。
pom.xml
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
开源
此任务开放源代码上GitHub。 欢迎提供反馈和建议。
常见问题解答
包含经过 settings.xml 身份验证的存储库的文件位于何处?
Maven 身份验证任务搜索settings.xml用户主目录中的证书。 对于 Linux 和 Mac,路径为 $HOME/.m2/settings.xml,Windows为 %USERPROFILE%\.m2\settings.xml。 如果settings.xml文件不存在,将在该路径创建一个新文件。
我们使用 开关mvn -s来指定自己的文件settings.xml,如何对Azure Artifacts进行身份验证?
Maven 身份验证任务无法访问使用 settings.xml指定的自定义证书 -s 文件。 若要将Azure Artifacts身份验证添加到自定义settings.xml,请在你的 settings.xml 文件中添加服务器元素:
<server>
<id>feedName</id> <!-- Set this to the id of the <repository> element inside your pom.xml file. -->
<username>AzureDevOps</username>
<password>${env.SYSTEM_ACCESSTOKEN}</password>
</server>
可以使用这些说明在管道中设置访问令牌 变量。
我的管道需要访问其他项目中的源
如果管道在托管源的项目不同的项目中运行,则必须设置另一个项目以授予对生成服务的读/写访问权限。 有关详细信息,请参阅 Azure Pipelines 包权限。