使用 Azure Pipelines 发布 Maven 工件

使用 Azure Pipelines,可以将 Maven 包发布到 Azure Artifacts 源、公共注册表,或作为管道工件发布。

设置项目

  1. 将以下代码片段添加到 pom.xml 文件中的 repositoriesdistributionManagement 部分。 将占位符替换为组织名称、项目名称和源名称。

    <repository>
      <id>MavenDemo</id>
      <url>https://pkgs.dev.azure.com/ORGANIZATION-NAME/PROJECT-NAME/_packaging/FEED-NAME/maven/v1</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    
  2. 按如下所示配置 settings.xml 文件。 将占位符替换为组织名称、项目名称和个人访问令牌。

    <server>
      <id>PROJECT-NAME</id>
      <username>ORGANIZATION-NAME</username>
      <password>PERSONAL-ACCESS-TOKEN</password>
    </server>
    
  3. 创建具有“打包读写”范围的个人访问令牌,并将其粘贴到 settings.xml 文件中的 password 标记中。

生成代码

在此示例中,我们将使用 Maven 任务通过 Azure Pipelines 生成项目。

- task: Maven@3
  inputs:
    mavenPomFile: 'my-app/pom.xml'    // Path to your pom file
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/surefire-reports/TEST-*.xml'
    goals: 'package'

将包发布到管道

下面的示例说明了如何将工件发布到管道中的 rop。 使用“复制文件”任务将包复制到目标文件夹,然后使用 “发布生成工件”将生成工件发布到 Azure Pipelines。

- task: CopyFiles@2
  inputs:
    Contents: '**'
    TargetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

A screenshot showing the build artifact published to drop in Azure Pipelines.

将包发布到你的源

要将包发布到 Azure Artifacts 源,可使用 Maven 任务将工件部署到源。

- task: Maven@3
  inputs:
    mavenPomFile: 'my-app/pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    mavenAuthenticateFeed: true
    publishJUnitResults: false
    testResultsFiles: '**/surefire-reports/TEST-*.xml'
    goals: 'deploy'

A screenshot showing the build artifact published to a feed.

问答

问:如何使用 MavenAuthenticate 进行身份验证?

答:可以使用 MavenAuthenticate 任务对组织内外的 Maven 源进行身份验证。 有关更多详细信息,请参阅以下示例: