Building a Maven Project with Files in a Local Repo - maven-3

I've installed two libraries to my local repository (JGraph and JGraphtT). I used this command:
mvn install:install-file -DgroupId=org.jgrapht -DartifactId=jgrapht -Dversion=0.8.3 -Dpackaging=jar -Dfile=./jgrapht.jar
and similar for JGraph. I can see that the two Jar files are in my local repository.
When I try to create Eclipse classpath and build files from the directory of my project's POM file (using mvn eclipse:eclipse), I get this error:
[WARNING] Missing POM for org.jrapht:jgrapht:jar:0.8.3
and similar for JGraph.
Any ideas on what I'm doing wrong? My settings.xml file has the local repository enabled.
Thanks,
Keith

Related

Isolate maven jar dependencies that are unavailable from maven central

I am attempting to refactor a maven build process, and I am trying to populate a local maven repository to help with this refactor.
My build depends on obsolete versions of jar files that exist only in a maven repo on my network (not in maven central). Example: org.foo:example:1.7:jar
I have been attempting to run my maven build in a docker image image with the hope that I could identify all of the obsolete components being pulled from my maven repository.
My goal is to explicitly pull down dependencies from my maven repo and then build the application using only maven central as an external repository.
I have a docker file to run the build
FROM maven:3-jdk-8 as build
WORKDIR /build
# This pom.xml file only references maven central.
COPY pom.xml .
# Explicitly download artifacts into /root/.m2/...
RUN mvn dependency:get -Dartifact=org.foo:example:1.7.jar \
-DrepoUrl=https://my.maven.repo
# Run the build making use of the dependencies loaded into the local repo
RUN mvn install
Unfortunately, I see an error: could not resolve dependencies for project ... The following artifacts could not be resolved: org.foo:example:jar:1.7.
I presume there might be some metadata in my local org.foo:example:1.7:pom that has an awareness of its origin repository. I had hoped I could satisfy this dependency by pulling it into my local repository.
I also attempted to add the following flag
RUN mvn install --no-snapshot-updates
After further investigation, I discovered that the downloads in my .m2/repository contained files named _remote.repositories.
Solution: set -Dmaven.legacyLocalRepo=true when running dependency:get
With this flag, the _remote.repositories files are not created.
RUN mvn dependency:get -Dmaven.legacyLocalRepo=true \
-Dartifact=org.foo:example:1.7.jar \
-DrepoUrl=https://my.maven.repo
This question helped to provide a solution: _remote.repositories prevents maven from resolving remote parent

How to define POM location in Jenkins that is installed on a remote PC

I have jenkins installed on a remote machine. How can I point my POM location in Jenkins. If I give the POM.xml location as C:\Automation\pom.xml I am getting the error no such file exists.
Started by user anonymous
Building in workspace C:\Users\Administrator\.jenkins\workspace\RegressionTestJob
Parsing POMs
ERROR: No such file C:\Automation\pom.xml
Perhaps you need to specify the correct POM file path in the project configuration?
TestNG Reports Processing: START
Looking for TestNG results report in workspace using pattern: **/testng-results.xml
Did not find any matching files.
Finished: FAILURE
Your pom should be in your workspace, like how you would build your project in an IDE e.g. eclipse and when you build your project Jenkins will find the pom on its own in the workspace and build the project
Incase you still wish to specify the location you can use the -f option
mvn -f PomFile.xml
Hope it helps :)

.m2 is not getting updated with latest xmlbeans jar files

I do have a jenkins job that builds XML beans jar files from the internal gitlab project and puts it on the artifactory. While having a build, this XML beans jar files are downloaded to the .m2 maven local repository. However, if this jar file exists in the .m2 repository then maven does not bother to download it from the artifactory. With being said, if there is a gitlab change, it does build it and put it on the artifactory. As there is already a jar file exist in .m2 repository, an old jar file is not being replaced with the new one. We ended up a wrong dependency to the customer with a release.
The question is , What am I doing wrong here?
mvn clean install -U
-U means maven will force update snapshot dependencies. Release dependencies can't not be updated this way.

Maven - How to force maven to consider my updated jar from local maven repository

I have a question related to maven - generating a war. Please see below.
- In one of my project (war), I am using a 3rd party jar (-SNAPSHOT version) whose entry I have made into my project pom.xml. So far it gets bundled correctly into the project war.
- But we encountered one issue in one of the java file inside this jar. For which my developer took the source code for the jar and modified-compiled and updated the jar file into local maven_repo directory.
- But whenever I build the project using maven clean:install command, my updated jar gets deleted from my local maven-repo dir and a fresh copy is downloaded from remote maven repo (where the actual 3rd party jar resides).
Can someone please help on this how can I manage so that maven use my modified jar and does not replace it with old jar during build process.
I am using maven-3.2.5.
you can run maven offline by running with the "-o" argument.
Example:
mvn clean install -o
Keep in mind that this will affect all your other dependencies and your need to have all the dependencies in your local .m2 repository.
Here is another thread taking up the issue of running maven offline:
How do I configure Maven for offline development?

could not find artifact while running maven build in jenkins

While building the maven application in jenkins i get the following error
[ERROR] Artifact: com.envoisolutions.sxc:sxc-runtime:jar:0.7.3-osgi has no file.
org.apache.maven.artifact.resolver.ArtifactNotFoundException: Could not find artifact com.envoisolutions.sxc:sxc-runtime:jar:0.7.3-osgi in central (http://repo.maven.apache.org/maven2)
org.apache.maven.artifact.resolver.ArtifactNotFoundException: Could not find artifact xpp3:xpp3_min:jar:1.1.3.4.O-osgi in central (http://repo.maven.apache.org/maven2)
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=xpp3 -DartifactId=xpp3_min -Dversion=1.1.3.4.O-osgi -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=xpp3 -DartifactId=xpp3_min -Dversion=1.1.3.4.O-osgi -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
xpp3:xpp3_min:jar:1.1.3.4.O-osgi
from the specified remote repositories:
central (http://repo.maven.apache.org/maven2, releases=true, snapshots=false),
codehaus-releases (http://repository.codehaus.org/, releases=true, snapshots=true),
java.net (http://download.java.net/maven/2/, releases=true, snapshots=true),
central (http://repo.maven.apache.org/maven2, releases=true, snapshots=false)
Is there any way to restrict the search of maven to few repos ?
This artifact seems to be very old.
I found it in this Maven repository :
https://teamcity-systeme.lip6.fr/nexus/content/groups/public
Add this repo to your Maven's pom.

Resources