I have a local jar which I need to test. This jar has not yet been pushed to maven repository.
I created a sample project and added this jar as an external jar on the classpath by clicking on configure build path.
When I import the class from the jar eclipse is able to import it but when i run Maven build it gives an error saying
com.x.y package does not exist
ClassName.class cannot find symbol
What is going wrong over here ?
Just push it to your local maven repository, this is the command line:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
Later add this dependency in your pom and it will work.
Related
I have a scenario, where in my maven repository, the required JAR is available, but it is not inside the version folder, instead, it is directly under the group.
For Example I need test-1.0.0.jar
In my Maven Repo, the jar is placed in the path like below,
com.java.test
----test-1.0.0.jar
But it is supposed to be like the below,
com.java.test
---1.0.0
------test-1.0.0.jar
Because of this, the jar is not downloading when I do maven install. Are there any workarounds to get the jar downloaded without changing the maven repository structure?
I think there is a problem with pom.xml of test.jar or jar uploaded to the remote repo incorrectly.
In that case, if you have control over test.jar codebase or remote repo, you can figure out what is wrong and fix it. If you don't have control over them, you can treat like it is 3rd party jar. Using below command you can populate the jar into your local maven repository.
mvn install:install-file
Basically, this command reads this dependency and installs into your local maven repository within the constraints you provided as a parameter.
Below example have been taken from Apache Maven Documentation.
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
But keep in mind, it is just a workaround for your local development. In the long run, the actual problem needs to be resolved. As mentioned earlier, either pom.xml of test.jar should be fixed or structure of remote repository should be corrected by re-uploading the jar.
You would need to re-upload your jar to the right path in Nexus, using mvn deploy:deploy-file :
In Windows:
cmd /v /c "set g=com.java&& set a=test&& set v=1.0.0&& mvn deploy:deploy-file -Dfile=!a!-!v!.jar -Dpackaging=jar -DgroupId=!g! -DartifactId=!a! -Dversion=!v! -DrepositoryId=your-nexus-id -Durl=https://nexus.your.comany.com repository/public"
You can execute that in the folder where the jar is, even without any pom.xml.
I have created spring-boot project in VS Code with maven. I am going to use oracle.jdbc.driver.OracleDriver to connect to oracle database. In Intellij Idea,
with right click on the jar I used to click add as library and it was done.
In visual studio code I have added path to ojdbc8.jar in .classpath as shown in this github issue, But I get Caused by: java.lang.IllegalStateException: Cannot load driver class: oracle.jdbc.driver.OracleDriver again.
In a maven project, all the dependencies are handled by pom.xml. We can use either maven repositories to download the dependencies or you can add it from your local directory. The following can be done install jar to local maven repository.
mvn install:install-file \
-Dfile=<path-to-file> \
-DgroupId=<group-id> \
-DartifactId=<artifact-id> \
-Dversion=<version> \
-Dpackaging=<packaging> \
-DgeneratePom=true
Reference - http://maven.apache.org/general.html#importing-jars
Is there any way to install an arbitrary Maven artifact into your local repository without first creating and switching to a project and specifying that package as one of its dependencies?
Yes, if you have the jar file of the artifact that you want to install to your local repository, you can the run the below command from your command prompt or terminal. Replace the value inside the angle brackets to your desired ones. And then you can use this as a dependency in your Maven projects.
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
HTH
I am Trying to add a third party jar to jenkis .m2 repository
This is the command i found to add it to the repository from command line
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
i have a linux machine where jenkins run by its own user. it has a .m2 repository in the home directory. when i tried the above command it gives error saying that, The program 'mvn' can be found in the following packages:* maven * maven2 . so jenkins can build with out a maven installed?, if so how it is done?. how can i add the jar to .m2 repository without installing maven ?
i read that maven need a setting.xml file in its .m2 folder, but i cant find any for jenkins.
You can also use the maven binary from the jenkin's maven-plugin. Use find / -type f -name mvn to find out, where the jenkins maven plugin is installed to and call mvn from there.
You can then change mvn install:install-file ... to <pathFromFind>/mvn install:install-file ... or add this path to your PATH variable.
I added a jar with:
mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging>
-DgeneratePom=true
And added it as a dependency. M2eclipse went through the external repository URLs attempting to download the jar and failed. When and how will it check the local repository for the jar?
Resolved: don't mix up underscores and hyphens.
Go to your user directory i.e. C:\Profiles\youruser there should be a folder called .m2 may be hidden. Inside you can see whether that jar has been installed or not(although if the console says BUILD success you should be good).