Connect your Maven project to an Azure Artifacts feed
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
With Azure Artifacts, you can seamlessly publish and restore Maven packages from feeds and public registries. Azure Artifacts supports upstreaming from Maven Central, Google Maven Repository, Gradle Plugins, and JitPack. This guide will walk you through the process of setting up your Maven project and connecting to your Azure Artifacts feed.
Prerequisites
An Azure DevOps organization. Create one for free.
An Azure DevOps project. Create a new project if you don't have one already.
An Azure Artifacts feed. Create one for free.
Project setup
Sign in to your Azure DevOps organization, and then navigate to your project.
Select Artifacts, and then select your feed from the dropdown menu.
Select Connect to feed, and then select Maven from the left navigation area.
If this is your first time using Azure Artifacts with Maven, make sure you've installed the prerequisites. Otherwise select Get the tools in the top-right corner to install them.
Follow the instructions in the Project setup section to set up your pom.xml and settings.xml files. Your files should resemble the following examples:
pom.xml:
<repositories> <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> </repositories> <distributionManagement> <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> </distributionManagement>
settings.xml:
<servers> <server> <id>MavenDemo</id> <username><ORGANIZATION_NAME></username> <password>[PERSONAL_ACCESS_TOKEN]</password> </server> </servers>
Generate a Personal Access Token with Packaging > Read & write scope, and then paste it into the
<password>
tag.
Sign in to your Azure DevOps collection, and then navigate to your project.
Select Artifacts, and then select your feed from the dropdown menu.
Select Connect to Feed, and then select Maven from the left navigation pane.
If this is your first time using Azure Artifacts with Maven, make sure you've installed the prerequisites, otherwise select Get the tools in the top-right corner to install them.
Follow the instructions in the Project setup section to set up your pom.xml and settings.xml files. Your files should resemble the following examples:
pom.xml:
<repositories> <repository> <id>MavenDemo</id> <url>http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/maven/v1</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <distributionManagement> <repository> <id>MavenDemo</id> <url>http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/maven/v1</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </distributionManagement>
settings.xml:
<servers> <server> <id>MavenDemo</id> <username><COLLECTION_NAME></username> <password>[PERSONAL_ACCESS_TOKEN]</password> </server> </servers>
Generate a Personal Access Token with Packaging > Read & write scope, and then paste it into the
<password>
tag.
Sign in to your Azure DevOps collection, and then navigate to your project.
Select Artifacts, and then select your feed.
Select Connect to Feed, and then select Maven from the left navigation pane.
Select Generate Maven Credentials and add the credentials to your user settings.xml file inside the
<servers>
tag. Your file should look like the following example:<servers> <server> <id>server-2019-defaultcollection-demo</id> <username><FEED_NAME></username> <password>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</password> </server> </servers>
Add the second snippet to your project's pom.xml inside both the
<repositories>
and<distributionManagement>
tags. Your file should look like the following example:<repositories> <repository> <id>server-2019-defaultcollection-demo</id> <url>http://<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/maven/v1</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <distributionManagement> <repository> <id>server-2019-defaultcollection-demo</id> <url>http://<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/maven/v1</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </distributionManagement>
Note
If your settings.xml
file is shared within your team, you can use Maven to encrypt your passwords.