Adding local repo like nexus to maven and managing dependencies | Community
Skip to main content
Level 2
August 10, 2021
Solved

Adding local repo like nexus to maven and managing dependencies

  • August 10, 2021
  • 2 replies
  • 4812 views

I have use case where I want my custom bundle to be used as a dependency in another project. I've been guided to use Nexus repo and to pull dependencies from there. Problem is I'm having zero luck finding any helpful tutorials about how to connect nexus to AEM.

 

I would like to know how I can add my custom bundle to the nexus local repository and how to configure my parent pom.xml to pull in dependencies from there.

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by MarkusBullaAdobe

Hi @akatsuki07!

For your use case, there is no need to establish a connection between Nexus and AEM.

What you need to do is:

  1. Tell Maven to deploy your bundle to your Nexus repository
  2. Tell Maven to use your Nexus repository for dependency resolution

 

For 1, there is a good tutorial from Sonatype. The most important part should be to add the following to your Maven settings.xml file (either at /conf in your Maven installation or at your ~/.m2 directory):

<servers>
  <server>
    <id>nexus-snapshots</id>
    <username>deployment</username>
    <password>the_pass_for_the_deployment_user</password>
  </server>
</servers>

Along with an according entry in your projects pom.xml file:

<distributionManagement>
   <snapshotRepository>
      <id>nexus-snapshots</id>
      <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
   </snapshotRepository>
</distributionManagement>

But more details and explanations are outlined in the linked tutorial.

 

 

For 2, you will need to add your Nexus server as an additional repository for dependency resolution, e.g. to your settings.xml (see above). This is outlined in this Maven guide on how to use multiple repositories:

<repository>
  <id>nexus-repo</id>
  <name>Internal Nexus repository</name>
  <url>http://yournexus:8001/</url>
</repository>

There are several ways to include this for different purposes, e. g. by adding it to a specific profile that can be activated by default or only when specified. Please check the Maven documentation for more details.

 

 

Once you have deployed your bundle to Nexus and any consuming project is built (with dependency resolution pointing at your Nexus server), the bundle dependency will automatically be handled as with any external dependency.

 

 

Apart from these two steps you may also want to add your Nexus server as a mirror for external repositories. Please refer to this Maven guide for further details.

 

Hope that helps!

2 replies

Kiran_Vedantam
Community Advisor
Community Advisor
August 11, 2021

Hi @akatsuki07,

 

In the setting.xml of your .m2 folder, you can add the nexus repo to your profile.

 

Reference link: https://maven.apache.org/settings.html#Profiles

Sample profile: https://helpx.adobe.com/experience-manager/kb/SetUpTheAdobeMavenRepository.html

 

For your use case, you need to add your custom bundle as dependency in another project - in both apps and core pom.

 

Hope this helps!

 

Thanks,

Kiran Vedantam.

MarkusBullaAdobe
Adobe Employee
MarkusBullaAdobeAdobe EmployeeAccepted solution
Adobe Employee
August 11, 2021

Hi @akatsuki07!

For your use case, there is no need to establish a connection between Nexus and AEM.

What you need to do is:

  1. Tell Maven to deploy your bundle to your Nexus repository
  2. Tell Maven to use your Nexus repository for dependency resolution

 

For 1, there is a good tutorial from Sonatype. The most important part should be to add the following to your Maven settings.xml file (either at /conf in your Maven installation or at your ~/.m2 directory):

<servers>
  <server>
    <id>nexus-snapshots</id>
    <username>deployment</username>
    <password>the_pass_for_the_deployment_user</password>
  </server>
</servers>

Along with an according entry in your projects pom.xml file:

<distributionManagement>
   <snapshotRepository>
      <id>nexus-snapshots</id>
      <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
   </snapshotRepository>
</distributionManagement>

But more details and explanations are outlined in the linked tutorial.

 

 

For 2, you will need to add your Nexus server as an additional repository for dependency resolution, e.g. to your settings.xml (see above). This is outlined in this Maven guide on how to use multiple repositories:

<repository>
  <id>nexus-repo</id>
  <name>Internal Nexus repository</name>
  <url>http://yournexus:8001/</url>
</repository>

There are several ways to include this for different purposes, e. g. by adding it to a specific profile that can be activated by default or only when specified. Please check the Maven documentation for more details.

 

 

Once you have deployed your bundle to Nexus and any consuming project is built (with dependency resolution pointing at your Nexus server), the bundle dependency will automatically be handled as with any external dependency.

 

 

Apart from these two steps you may also want to add your Nexus server as a mirror for external repositories. Please refer to this Maven guide for further details.

 

Hope that helps!