Deploy External Library on Nexus using Maven - java

I'm using Maven & Nexus repository.
The setup looks good, my project deploy on Nexus properly, but I would like to add my External library loaded by Maven as well on Nexus and I don't find the way to do it.
Do you know how to do it ?
Many thanks,

To deploy an external library you can use the Maven goal deploy:deploy-file.
I took the following example from the Nexus 3 support
On the command line this could look like this:
mvn deploy:deploy-file -DgroupId=com.somecompany -DartifactId=project -Dversion=1.0.0 -DgeneratePom=true -Dpackaging=jar -DrepositoryId=nexus -Durl=http://localhost:8081/repository/maven-releases -Dfile=target/project-1.0.0.jar
The repositoryId is a server defined in your settings.xml.
<servers>
...
<server>
<id>nexus</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
Hint: As this is a bit cumbersome. Check if your library is available on a public Maven repository. If it is available just add that repository to Nexus as Proxy Maven Repository.

Related

How to deploy private jar to gitlab Maven repository

I would like to know if it is possible to deploy a custom jar file into an existing maven repository. By custom, I mean, my own existing jar from my local machine.
So, I have a project test-project on gitlab (https://gitlab.com/group/test-project), and it is a java application that I build and deploy using gitlab pipelines. In the build stage, I am doing mvn deploy and the package test-project.jar is pushed to a gitlab maven repository (https://gitlab.com/group/test-project/-/packages).
Now, I have a dependency.jar file which is listed as a dependency in my pom.xml. I would like to push that file into the same maven repository as my test-project.jar. There is nothing about that in the documentation here. https://docs.gitlab.com/ee/user/packages/maven_repository
I tried to push it with maven-deploy-plugin in a way described here http://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html
I am getting an error Failed to deploy artifacts: Could not find artifact... which is strange because I am trying to push new artifact, of course, it does not exist.
I am not sure if this is an issue with GitLab (I doubt that) or I am doing something wrong, or what I want is just not possible.
Edit
I was able to push the package but the thing is I needed to run deploy:deploy-file from the build, not from my local.
This would be the pipeline configuration
stages:
- build
maven-repo-push:
stage: build
image: maven:3.6.2
variables:
GROUP: "com.example"
ARTIFACT: "myproject"
VERSION: "1.1.1"
REPO_PROJECT_ID: "12345678" #gitlab project ID
script:
- mvn deploy:deploy-file
-DgroupId=$GROUP
-DartifactId=$ARTIFACT
-Dversion=$VERSION
-Dpackaging=jar
-Dfile=$ARTIFACT-$VERSION.jar
-DgeneratePom=false
-DpomFile=$ARTIFACT-$VERSION.pom
-Dfiles=$ARTIFACT-$VERSION-tests.zip
-Dtypes=zip
-Dclassifiers=tests
-DrepositoryId=gitlab-maven
-Durl=https://gitlab.com/api/v4/projects/$REPO_PROJECT_ID/packages/maven
-s settings.xml
when: manual
Make sure you have pushed with this configuration the files you want to push in format $ARTIFACT-$VERSION.jar and
The default settings.xml needed for authentication
https://docs.gitlab.com/ee/user/packages/maven_repository/#authenticating-with-a-ci-job-token
Still, my question remains, is it possible to do this from local
You can publish a library/jar from local file system as well, just have a settings.xml something like
<settings>
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Private-Token</name>
<value>PUT-YOUR-PRIVATE-TOKEN-HERE</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
Or if you wan to use a group token or deploy token , make sure you update the property name above , documented here https://docs.gitlab.com/ee/user/packages/maven_repository/#authenticate-with-a-deploy-token-in-maven
And then use this to publish your jar on GitLab's package registry, keep in mind that you can only publish to project api endpoints , but you can use group endpoints to download/install artifacts locally
mvn -s settings.xml deploy:deploy-file \
-Durl=https://gitlab.com/api/v4/projects/<PUT-PROJECT-ID-HERE>/packages/maven \
-DrepositoryId=REPOSITORY-ID # has to match the settings.xml server:id \
-Dfile=your-lib.jar \
-DgroupId=your.group.id \
-DartifactId=artifact-name \
-Dversion=1.0 \
-Dpackaging=jar \
-DgeneratePom=false

Can maven use both local and remote repositories?

I have a maven project running perfectly using the pom.xml file to get the needed jar files. Unfortunately the database I connect to doesn't have any jar files out on mvnrepository. Right now they're sitting in the Referenced Libraries folder.
Since these files are proprietary I need to keep them local. I've set up Apache Archiva and have added the files.
Can I get my project pom file to reference both a remote repository and a local repository?
Yes you can, something like this:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>
For more details on this you can look over here.
You can also look at this article.
With the following configuration you can achieve it:
<localRepository>/dev/m2repo</localRepository>
Can I get my project pom file to reference both a remote repository and a local repository?
That's how Maven already works. Dependencies are first looked up in your local repository and if not present, they are downloaded from the remote repository to the local repository. In this case, your third-party Jars need to be either installed in your local repository, or better yet deployed to the remote repository so that other developers can use them.
Ideally you would deploy these third party libraries to a remote repository using a repository manager like Sonatype Nexus. If you are using a Nexus repository manager, see https://books.sonatype.com/nexus-book/reference/using-sect-uploading.html for how to do this. This would apply to your exact scenario, as the linked page describes:
When your build makes use of proprietary or custom dependencies that are not available from public repositories, you will often need to find a way to make them available to developers in a custom Maven repository. Nexus Repository Manager Pro and Nexus Repository Manager OSS ship with a preconfigured third-party repository that was designed to hold third-party dependencies that are used in your builds.
This can also be done using the maven-deploy-plugin but requires you to configure in the pom.xml the target repository as described in the documentation.
EDIT:
You mention using Apache Archiva which is also a repository manager that allows you to deploy the artifacts to its repository. https://archiva.apache.org/docs/2.2.1/userguide/deploy.html explains how to do it. https://archiva.apache.org/docs/2.2.1/userguide/using-repository.html explains how to configure Maven to get dependencies from an Archiva repository.
You can also install the libraries only to your local repository by running the maven-install-plugin:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
See https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html. The drawback is that other developers have to do this step in order to build their projects.

How to share Maven archetypes?

I've created a Maven archetype which I want to share within my company. To do so, I deployed it to our Nexus server and it can be used from there, but it is somewhat inconvenient since it seems not to be in the catalog of known archetyps on other machines. The workaround is to use it like this:
mvn archetype:generate -DarchetypeCatalog=http://nexus/content/repositories/releases/
Would it be possible to use maven without explicitly giving the archtype catalog? I want to use this internal archetype like any other public available archetype.
Here is how I do it:
I configure Maven in $HOME/.m2/settings.xml to use the Nexus server as mirror for everything:
<mirrors>
<mirror>
<id>Nexus</id>
<name>Nexus Server</name>
<url>http://nexus/content/repositories/groups/public</url>
<mirrorOf>external:*</mirrorOf>
</mirror>
</mirrors>
I then put all repos which developers should use in the group public (i.e. the proxy repo for Maven Central, my snapshot and release repos, etc).
Nexus will then merge all catalogs (the one from Maven central and the ones from the company repos) into one. That makes all archetypes visible under the default URL.

Maven project - Could not calculate build plan [duplicate]

org.apache.maven.plugin.PluginResolutionException: Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:129)
at org.eclipse.m2e.core.internal.project.registry.EclipsePluginDependenciesResolver.resolve(EclipsePluginDependenciesResolver.java:48)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:142)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getMojoDescriptor(DefaultMavenPluginManager.java:261)
at org.apache.maven.plugin.DefaultBuildPluginManager.getMojoDescriptor(DefaultBuildPluginManager.java:185)
at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.setupMojoExecution(DefaultLifecycleExecutionPlanCalculator.java:152)
at org.eclipse.m2e.core.internal.embedder.MavenImpl.setupMojoExecution(MavenImpl.java:386)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.setupMojoExecution(ProjectRegistryManager.java:865)
at org.eclipse.m2e.core.internal.project.registry.MavenProjectFacade.getMojoExecution(MavenProjectFacade.java:355)
at org.eclipse.m2e.core.project.configurator.AbstractCustomizableLifecycleMapping.getBuildParticipants(AbstractCustomizableLifecycleMapping.java:66)
at org.eclipse.m2e.core.project.configurator.AbstractLifecycleMapping.configure(AbstractLifecycleMapping.java:87)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:414)
at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:351)
at org.eclipse.m2e.core.ui.internal.UpdateMavenProjectJob.runInWorkspace(UpdateMavenProjectJob.java:74)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: org.sonatype.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:296)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:186)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:279)
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:115)
I have read where many people were able to solve this by:
Deleting the folder from the local repository and letting it re-download it (this did not work)
By configuring eclipse to target your maven installation instead of the embedded one as described here (this did not work)
Could not calculate build plan :artifact org.apache.maven.plugins:maven-resources-plugin:pom:2.4.3 is not available in the local repository
I am new to Maven so please excuse any of my ignorance.
This project is working on another machine, and just pulled it down from the repository on this one, with the same version of eclipse and m2e plugin installed. I have been fooling with this for over 10 hours now and it is driving me nuts (Maven has been nothing but headaches for me so far...)
EDITS
After looking closer I did notice that it is not downloading the .jar files into the local repository... I am not sure if that is something obvious...
I am not given the option to add Maven Dependencies to the build path.
I had the exact same problem.
[ERROR] Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5: Failure to find org.apache.maven.plugins:maven-resources-plugin:pom:2.5 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
...
Had maven 3.0.5, eclipse Kepler with JBoss Dev Studio 7 installed. Computer sitting on internal network with proxy to the internet. Here's what I did.
0. Check the maven repositiory server is up
1. Check Proxy is set up and working
First I thought it was a proxy problem, I made sure that maven settings.xml contained the proxy settings (settings.xml can exist in two places one in MAVEN_HOME. The other in %userprofile%.m2\ with the later having higher precedence):
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>optional-proxyuser</username>
<password>optional-proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
and checked that the proxy is working by trying to telnet to it:
telnet [proxy] [port number]
2. Check not Eclipse Issue
ran 'mvn compile' at command line level outside of eclipse - same issue.
If 'mvn compile' worked. But it doesn't work using the maven plugin in eclipse, see Maven plugin not using eclipse's proxy settings
3. Check not Cache Issue
Deleted all contents in my local maven repository. (Default location: ~/.m2/repository) And then reran maven - same issue came up.
4. What worked for me
Automatically download & install missing plugin:
By declaring the missing plugin in the POM file build section for pluginManagement Maven will automatically retrieve the required plugin. In the POM file, add this code for the version of the plugin you require:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</pluginManagement>
</build>
Manually install missing plugin:
I went to http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-resources-plugin/2.5 and downloaded maven-resources-plugin-2.5.jar and maven-resources-plugin-2.5.pom . Copied it directly into the maven repository into the correct folder ( ~/.m2/repository/org/apache/maven/plugins/maven-resources-plugin/2.5) and reran 'mvn compile'. This solved the problem.
Edit1
Following this I had another two problem with 'mvn install':
The POM for org.apache.maven.plugins:maven-surefire-plugin:jar:2.10 is missing, no dependency information available
The POM for org.apache.maven.plugins:maven-install-plugin:jar:2.3.1 is missing, no dependency information available
I approached this problem the same way as above, downloading from http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin/2.10 and http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-install-plugin/2.3.1
I had the exact same problem and since I read somewhere that the error was caused by a cached file, I fixed it by deleting all the files under the .m2 repository folder.
The next time I built the project I had to download all the dependencies again but it was worth it - 0 errors!!
Couple of things to try:
Doublecheck the location of the local artifact repo configured in your settings.xml file (at the following location {your home folder}/.m2/settings.xml). Are you sure the local repo is where you think it is? (Yes, a mistake I've made in the past...)
Remove entire contents of artifact repo on the new build machine (or at least anything related to Maven). You mentioned doing some artifact repo cleanup but I'm not sure what directory(ies) you removed. I've run into weird issues like these when a jar was corrupted.
Make sure you have enough disk space/quota for the local artifact repo. I have run into weird issues when I didn't have a large enough quota to hold all the artifacts, likely caused by partially downloaded jar files.
Try running with plain Maven on the command line; take Eclipse and m2e out of the equation. mvn -U dependency:resolve should do it. The -U forces Maven to download no matter what your repository update policies are. Add -X to get detailed debug logging.
Copy settings.xml from MAVEN_HOME\conf\ to USER_HOME.m2. Add proxies (if needed) in case you are behind a proxy server.
Follow easy steps to resolved the below issue:
Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact description for org.apache.maven.plugins:maven-ar-plugin:ar:2.4 in eclipse
Solution:
Step1:
Step2:
Issue solved ☺
i faced the same issue while using eclipse kepler and maven version 3.2,
while building the project, it showed me the same error in eclipse
there are two versions (2.5 and 2.6) of plugin under
.m2/repository/org/apache/maven/plugins/maven-resources-plugin/
i removed 2.5 version then it worked for me
My problem was the location of the config file.
In eclipse settings (Windows->preferences->maven->User Settings) the default config file for maven points to C:\users\*yourUser*\.m2\settings.xml. If you unzip maven and install it in a folder of your choice the file will be inside *yourMavenInstallDir*/conf/, thus probably not where eclipse thinks (mine was not). If this is the case maven won't load correctly. You just need to set the "User Settings" path to point to the right file.
It appears that there can be a lot of different causes for this issue. I experienced it after installing a new version of Eclipse (Luna). Command-line maven worked fine, but Eclipse had build issues.
I use a Certificate Authority in my JRE. This is important because this provides my authentication when downloading Maven resources. Even though my project was pointing to the appropriate JRE inside of Eclipse - Eclipse was running using a different JRE (this is apparent looking at the Java process properties in Windows task manager). My solution was to add the following in my eclipse.ini
and explicitly define the JRE I want to use.
-vm
C:\Program Files\Java\jdk1.7.0_51\bin\javaw.exe
You should check Force Update Snapshots/Releases when updating project with maven.It worked for me :-).
his issue is happening due to change of protocol from http to https for central repository. please refer following link for more details. https://support.sonatype.com/hc/en-us/articles/360041287334-Central-501-HTTPS-Required
In order to fix the problem, copy following into your pom.ml file. This will set the repository url to use https.
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>
Try to delete all dirs in /usr/share/maven-repo - of course then maven will die so you must re-install and try again. In my case re-install from maven ver.3. to maven2 with deleting all repositories helped.
I tried by deleting all from .m2 but that didn't help.
Some files where missing at your local repository. Usually under ${user.home}/.m2/repository/
Neets answer solves the problem. However if you dont want do download all the dependencies to your local repository again you could add the missing dependency to a project of yours and compile it.
Use the maven repository website to find the dependency.
In your case http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-resources-plugin/2.5 was missing.
Copy the listed XML to the pom.xml file of your project. In this case
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
</dependency>
Run mvn compile in the root folder of the pom.xml. Maven will download all missing dependencies. After the download you can remove the added dependency.
Now you should be able to import the maven project or update the project without the error.
What I found out is that while m2e is looking for v2.5 by default, my local repo has 2.6 and no 2.5.
Without going into investigation of how this came about
simply adding the dependency to pom solved the problem
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</dependency>
This can be removed after running a build once
A more subtle reason for this could be a Settings.xml file which has a space in the first line before the doctype
Hopefully I'm not late for the party.
Encountered this using Eclipse Kepler and Maven 3.1.
The solution is to use a JDK and not a JRE for your Eclipse project. Make sure to try maven clean and test from eclipse just to download missing jars.
I had the same problem but with an other cause. The solution was to deactivate Avira Browser Protection (in german Browser-Schutz). I took the solusion from m2e cannot transfer metadata from nexus, but maven command line can. It can be activated again ones maven has the needed plugin.
Most people will tell you to check your proxy settings or delete and re-add artifacts, but I will stay away from that and give another suggestion in case that doesn't turn out to be your problem. It could be your mirror settings.
If you use maven at the office then there's a good chance maven is configured to look for your company's internal maven repository. If you're doing some work from home and you are not connected to the network this could be the problem. An obvious solution might be VPN to the office to get visibility to this repo. Another way around this is to add another mirror site to your /User/.m2/settings.xml file so if it fails to find it on your office network it will try public repo.
<mirror>
<id>Central</id>
<url>http://repo1.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- United States, St. Louis-->
</mirror>
For other maven repositories take a look here: http://docs.codehaus.org/display/MAVENUSER/Mirrors+Repositories
In my case I'm using an external maven installation with m2e. I've added my proxy settings to the external maven installation's settings.xml file. These settings haven't been used by m2e even after I've set the external maven installation as default maven installation.
To solve the problem I've configured the global maven settings file within eclipse to be the settings.xml file from my external maven installation.
Now eclipse can download the required artifacts.
After entering your proxy settings in settings.xml
<proxies>
<!-- proxy
| Specification for one proxy, to be used in connecting to the network.
| -->
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>DOMAIN\YOURID</username>
<password>123456</password>
<host>proxy.company.com</host>
<port>8080</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
</proxies>
Check whether the below tag is having the value false in settings.xml
<offline>false</offline>
This helped me.
In addition to what #JackDev replies, what also solved my problem was to
1) Install the jdk under directory with no spaces:
C:/Java
Instead of
C:/Program Files/Java
This is a known issue in Windows. I fixed JAVA_HOME as well
2) Install maven as in Java case, under C:/Maven. Fixed the M2_HOME accordingly.
3) I java 7 and java 8 on my laptop. So I defined the jvm using eclipse.ini. This is not a mandatory step if you don't have -vm entry in your eclipse.ini. I updated:
C:/Java/jdk1.7.0_79/jre/bin/javaw.exe
Instead of:
C:/Java/jdk1.7.0_79/bin/javaw.exe
Good luck
If you've configured a repository in your maven's settings.xml, check if you've access to it.
When I had this problem, there were enterprise repositories configured in settings.xml but I was out of the company.
JackDev's option 3 works for me after I changed the default repository to another folder.
Below is what I see after M2E plugin automatically download the maven-resources-plugin-2.6. Maybe this could give you some hint if you want to take the manual approach. The necessary files can be downloaded from here: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/
If you have a proxy, you also have to clear SOCKS in
Window > Preferences > Network Connections.
I was getting the same issue.
I just installed the m2e (Maven2Eclipse)plugin from below site:
http://www.eclipse.org/m2e/
Eclipse>Help>Install New Software>Available Software Sites>Add
Name: m2e (any name is OK)
Location:m2e - http://download.eclipse.org/technology/m2e/releases/
Under Install Window> Work with:
Select this new location and Add all the plugins that appear. Eclipse restart and it was running properly with no previous errors.
If your working at a company, they may be preventing you from downloading outside software and installing it. You may need to install the plugins manually or repoint to an internal mirror repository.
Try downloading a different version of maven.
I had the same problem with maven 3.5.2 , I solved my problem just downloading maven 3.0.4
Very old stuff.
Got it solved fixing the localRepository in settings.xml.
This file was copied from my other computer and the path of the .m2 repository wasn't the same.
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:\Users\foo\.m2</localRepository>
</settings>
I could solve the issue with the following steps
Install Maven separately
https://www.mkyong.com/maven/how-to-install-maven-in-windows/
Set the external Maven installation in Eclipse
3. Set the proxy in settings.xml in Maven installation
(C:\path\apache-maven-3.6.0\conf)
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>optional-proxyuser</username>
<password>optional-proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
Update the Maven User Settings
Update Maven project
I have shifted my project to a different machine, copied all my maven libraries from old machine to new machine, did Right click on my project >> Maven >> Update Project. And then built my project. In addition to this, I have also done this one step which is shown in screenshot. And that's all it worked!!
Go to Window --> Preferences --> Maven --> User Setting, make sure you have these settings..
Also Right click on your project --> Properties --> Maven, and make sure you have the path here to maven repository..
I am facing the same issue and none of above works, like by updating the MVN also same error, by building is also same, entered details in settings.xml though even same issue.
After that again I tried and did something different which did not did before and it works.
Its simple, I clicked the force update while updating the Mvn project.
By right clicking on the pom file, there is option under Maven,
"Update Project" and it open up one popup to select update option.
PLEASE MAKE SURE FORCE UPDATE IS CHECKED, by default is unchecked. And
bingo, that works like charm!
To solve this issue I tried below method :
(I was working on eclipse IDE)
Go to location : C:\User\local.m2\setting.xml
Open setting.xml file in any editor.
Comment the proxy setting like I did(see below setting.xml file).
Then go to eclipse & perform Maven Update from :right clicking on your solution folder(Your Project)->select Maven->Update Project.
Hope it will work for you as like me.
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
</proxies>
-->
</settings>

Maven tries to download ojdbc14.jar again - jar already present in local repository

When I run the command mvn eclipse:eclipse, the dependency jar ojdbc14.jar is getting downloaded without any issues. Then, when I run the command mvn clean install, maven tries to download the same jar again - but this time it fails saying that the jar is not found in the repository.
What I have noted is that, when running the command for the first time (mvn eclipse:eclipse), Maven looks into the Nexus repository of our company - and it finds the jar. When running the command mvn clean install, maven directly goes to the central repository without looking into Nexus - and hence it is not finding the jar.
1) Why is maven trying to download the jar when it is already present in the local machine?
2) Why is maven skipping the Nexus repository before going to the central repository?
I suspect that you problem is related to you maven settings file. Does you settings file catch calls to all remote repositories for example like this:
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://yournexusrepoaddress</url>
</mirror>
If not, downloaded pom files could override where to look for external repositories. See this link for more information. I hope that this helps.

Categories