包: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 包权限。