| title | Publish Maven artifacts with Azure Pipelines |
|---|---|
| description | Learn how to publish Maven artifacts to internal and external feed using Azure Pipelines. |
| ms.topic | how-to |
| ms.date | 06/30/2025 |
| monikerRange | >= azure-devops-2020 |
[!INCLUDE version-gt-eq-2020]
Azure Pipelines enables developers to publish Maven artifacts to Azure Artifacts feeds within the same organization, across other organizations, and to public registries such as Maven Central. This article guides you through publishing your Maven artifacts using both YAML and Classic pipelines.
| Product | Requirements |
|---|---|
| Azure DevOps | - An Azure DevOps organization and a project. - An Azure Artifacts feed. - A working pipeline. - Permissions: - To grant access to all pipelines in the project, you must be a member of the Project Administrators group. - To create service connections, you must have the Administrator or Creator role for service connections. |
::: moniker range="azure-devops"
- Sign in to your Azure DevOps organization, and then navigate to your project. ::: moniker-end
::: moniker range="< azure-devops"
- Sign in to your Azure DevOps collection, and then navigate to your project. ::: moniker-end
::: moniker range="<=azure-devops" 2. Select Pipelines, and then select your pipeline definition. ::: moniker-end
-
Select Edit, and then add the following snippet to your YAML pipeline:
steps: - task: MavenAuthenticate@0 displayName: 'Authenticate to Azure Artifacts feed' inputs: artifactsFeeds: 'MavenDemo,MavenDemoFeed2' ## Select one or multiple feeds to authenticate with. - script: | mvn deploy displayName: 'Publish'
::: moniker range="azure-devops"
- Sign in to your Azure DevOps organization, and then navigate to your project. ::: moniker-end
::: moniker range="< azure-devops"
- Sign in to your Azure DevOps collection, and then navigate to your project. ::: moniker-end
::: moniker range="<=azure-devops" 2. Select Pipelines, and then select your pipeline definition. ::: moniker-end
-
Select Edit, and then select the
+sign to add a new task. Add the Maven Authenticate and Command line tasks to your pipeline definition and configure them as follows:-
Maven Authenticate: Select one or multiple feeds from the Feeds dropdown menu.
-
Command line task:
- Display name: Publish
- Script:
mvn deploy
-
-
Select Save & queue when you're done.
Note
To publish packages to a feed using Azure Pipelines, make sure that both the Project Collection Build Service and your project's Build Service identities are assigned the Feed Publisher (Contributor) role in your feed settings. See Manage permissions for more details.
To publish packages to a feed in a different Azure DevOps organization, you must first create a personal access token (PAT) in the target organization, and then use that PAT to create a service connection and authenticate with the target feed.
-
Navigate to the organization that hosts the target feed.
-
Create a personal access token with Packaging > Read & write scope.
-
Copy your personal access token as you'll need it in the following section.
-
Sign in to the Azure DevOps organization where your pipeline will run, and then navigate to your project.
-
Navigate to your Project settings > Service connections.
-
Select New service connection, select Maven, and then select Next.
-
For Authentication method, select Username and Password. Enter your Repository URL and your Repository Id.
-
In the Username field, enter any string value (this is required, but Azure Pipelines will use your
pom.xmlconfiguration and the personal access token you created earlier for authentication).- For Password, paste the personal access token you created earlier.
- Provide a Name for your service connection.
- Check the Grant access permission to all pipelines checkbox.
-
Select Save when you're done.
-
Sign in to your Azure DevOps organization, and then navigate to your project.
-
Select Pipelines, and then select your pipeline definition.
-
Select Edit, and then add the following snippet to your YAML pipeline:
steps: - task: MavenAuthenticate@0 displayName: 'Authenticate to Azure Artifacts feed' inputs: MavenServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION> - script: | mvn deploy displayName: 'Publish'
::: moniker range="azure-devops"
- Sign in to your Azure DevOps organization, and then navigate to your project.
::: moniker-end
::: moniker range="< azure-devops"
- Sign in to your Azure DevOps collection, and then navigate to your project.
::: moniker-end
::: moniker range="<=azure-devops"
- Select Pipelines, and then select your pipeline definition.
::: moniker-end
-
Select Edit, and then select the
+icon to add a new task. Add the Maven Authenticate and Command line tasks to your pipeline definition and configure them as follows:-
Maven Authenticate: From the Credentials for repositories outside this organization/collection dropdown, select your service connection.
-
Command line task:
- Display name: Publish.
- Script:
mvn deploy
-
-
Select Save & queue when you're done.