Use Jar as intelliJ/Maven Dependency - maven

How do i use Jar files as a dependency using IntelliJ with Maven? I have some jar's containing API codes but when I put them in my external library it gives an error saying it's missing.

The easiest way to do it is by installing the jar file in your local Maven repository, as JB Nizet already mentioned:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
See also How to add local jar files in maven project?
This works fine as long as you are only using your local Maven repository. However when others should be able to build your project, they will run into the same problem. So here the easiest way would be to install the jar file in proxy Maven repository if you have one (many companies do).
You could also reference the jar file as a system dependency:
<dependency>
<artifactId>..</artifactId>
<groupId>..</groupId>
<scope>system</scope>
<systemPath>${basedir}/lib/dependency.jar</systemPath>
</dependency>
There is also a very nice alternative: Maven: add a dependency to a jar by relative path

Related

Adding 3rd Party JAR to Spring Boot War Build intended for a remote Server

I am converting a local Spring boot Jar app to a War build , using an external TomCat server.
Spring Boot app is running using 2 3rd party jars placed in libs folder.
I am facing an issue trying to include these 2 jars to the final war.
Added these jars to the ClassPath intelliJ Artifact settings but no luck.
Tried putting them manually in WEB-INF/lib folder but no luck.
Tried the above method.
<dependency>
<groupId>myJarGroup</groupId>
<artifactId>myJarArtifact</artifactId>
<version>>1.7.0.1</version>
<scope>compile</scope>
<systemPath>${project.basedir}/src/main/resources/xxx/myjar.jar</systemPath>
</dependency>
Again no luck.
WEB-INF/lib is still missing my 2 jars.
Only a type can be imported. ec.ec.ada.ec.common.ec.code.testValidate resolves to a package
testValidate cannot be resolved
Error importing : 'ec.ec.ada.ec.common.ec.code.testValidate'
You will have to incluse these two jars as dependency in pom. I know this is 3rd party depencdency but you can add it like below:
mvn deploy:deploy-file -Durl=file:///path/to/yourproject/repo/ -Dfile=mylib-1.0.jar -DgroupId=com.example -DartifactId=mylib -Dpackaging=jar -Dversion=1.0
This way they will be saved in maven repository and maven war plugin will include same in war that will be generated for deployment.
Here you go!
Although rarely, but sometimes you will have 3rd party JARs that you
need to put in your local repository for use in your builds, since
they don't exist in any public repository like Maven Central. The JARs
must be placed in the local repository in the correct place in order
for it to be correctly picked up by Apache Maven. To make this easier,
and less error prone, we have provide a goal in the
maven-install-plugin which should make this relatively painless. To
install a JAR in the local repository use the following command:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
With version 2.5 of the maven-install-plugin it gets even better. If
the JAR was built by Apache Maven, it'll contain a pom.xml in a
subfolder of the META-INF directory, which will be read by default. In
that case, all you need to do is:
mvn install:install-file -Dfile=<path-to-file>
From a Maven Guide to installing 3rd party JARs.

How do add ucanaccess maven dependency in pom.xml

I can't get the maven dependency for ucanaccess to work:
net.ucanaccess
ucanaccess
2.X.X
It doesn't seem to be available?
It appears that ucanaccess is not currently available from maven central (based on googling for it and finding this thread).
I'd recommend downloading it from sourceforge, extracting the jar, and installing the jar in your local repo using the instructions from the maven documentation:
mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging>
-DgeneratePom=true
Where: <path-to-file> the path to the file to load
<group-id> the group that the file should be registered under
<artifact-id> the artifact name for the file
<version> the version of the file
<packaging> the packaging of the file e.g. jar
Did you look on http://mvnrepository.com/ to check whether your dependency is present or not ?
If not you should drop the jar in your classpath by yourself or create the appropriate directory in your local maven repository at %HOME%.m2\repository.

Maven ant task to add system path jar to WAR file

Running into a small problem. I have a spring-maven project. And there are some external jars I need to add into the POM which I did using .
Now to build the WAR file we are using an Ant Maven task i.e. artifact:mvn providing the argument war:war.
Here somehow my external jars are not getting added to the WAR file i.e. WEB-INF/lib
Can some one please let me know if I am missing something. Below is my pom entry
<dependency>
<groupId>{test}</groupId>
<artifactId>Test</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/test.jar</systemPath>
</dependency>
Best solution is to start using a repository manager (a.k.a "Maven proxy server") and install the needed artifacts (test.jar) into the repository manager and use it as a usual dependency instead of using system scope via systemPath.
Calling mvn war:war via Ant does not make sense and shows you should learn how Maven works.
Change the packaging type in your pom file to war and you can simply call maven via:
mvn clean package
and everything should work. But this is only gues cause you didn't show your full pom file.
Install the test.jar locally using mvn install:install-file (docs). Now you can remove the system scope (and the systemPath) and everything will work out of the box.

Warning POM missing in the jar

I have created the jar through maven from some other project. The jar reside in the location repository. The jar contains the pom.xml file in META-INF/maven///pom.xml
and pom.properties.
I have also copied the pom.xml file while running the pom for that project using resource-copy
plugin. Still I am getting the below warning , there fore during the building of war the maven not able to include all the dependent jars of the above jars in the war file. Other option is to add thoses jars as a runtime dependency in my war pom file.
[WARNING] The POM for org.artifact:runtime.ui:war:1.0.0-SNAPSHOT is missing, no dependency information available
I found that only goal packaging will put the artifact in a local repository. But then for each artifact I need to do the install so that it will get in the files system repository with the pom file. Copying the pom file using resource plugin will not help.
Hi you need to install the specific jar to your local repository (for a start).
If this jar is properly packaged using maven you can issue the following command from the terminal:
mvn install:install-file -Dfile=<path-to-file>
If it is custom made you need to include the required parts like
mvn install:install-file -Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging
Please see the official documentation here.
Hope it helps

Adding Jar files to Maven

I have started to work on maven project recently.
The piece of code I am writing needs JAR files that are not a part of the project.
When I add the JARS TO THE build path and use a mvn clean install, the build is failing with errors saying that the classes that were supposed to be in the jar were not found.
Is there anything that i am missing?
Is there a different way to add the JAR's in maven projects?
If the JARs are already hoisted in some public Maven repositories, add them to the <dependency> section in the pom.xml . You may have to configure the address of these public Maven repositories in the <repositories> section in the pom.xml in order to cause Maven can connect them.
Otherwise , you have to use the install command to include these JARs into the your local repository and then add their <dependency> section in the pom.xml
The command to install the JARs into your local repository:
mvn install:install-file -DgroupId=com.abc -DartifactId=XXXXX
-Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jars
It sounds like you don't understand how Maven works. You don't add jars to the build path, you declare them in the pom, and let Maven download to the local drive, and it adds it to the build path for you. I would recommend you read this 5 minute intro, and understand how the dependency management works.

Resources