Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to include system dependencies in war built using maven

I've searched on internet for quite some time and I'm unable to figure out how to configure the maven-war plugin or something alike so that the system dependencies are included in the built-war (WEB-INF/lib folder)

I use the maven dependency plugin in case of a jar-build as :

<plugin>     <artifactId>maven-dependency-plugin</artifactId>     <executions>         <execution>             <phase>install</phase>             <goals>                 <goal>copy-dependencies</goal>             </goals>             <configuration>                 <outputDirectory>${project.build.directory}/lib</outputDirectory>             </configuration>         </execution>     </executions> </plugin> 

but I'm unable to understand what is to be done in case of a war build. I've tried using the maven-war plugin, but it's not including system-dependencies in the build.

[UPDATE]

I'm having depedencies of type :

<dependency>     <groupId>LoginRadius</groupId>     <artifactId>LoginRadius</artifactId>     <scope>system</scope>     <version>1.0</version>     <systemPath>${basedir}\lib\LoginRadius-1.0.jar</systemPath> </dependency> 

in my POM and these dependencies are not included in WEB-INF/lib when the war is build.

like image 841
coding_idiot Avatar asked Sep 28 '13 10:09

coding_idiot


People also ask

What is system dependency in Maven?

In Maven, a dependency is just another archive—JAR, ZIP, and so on—which our current project needs in order to compile, build, test, and/or run. These project dependencies are collectively specified in the pom.

How does Maven work with dependencies?

Dependencies are external JAR files (Java libraries) that your project uses. If the dependencies are not found in the local Maven repository, Maven downloads them from a central Maven repository and puts them in your local repository.


1 Answers

Let me try to summarise the options I tried :

<packagingIncludes>${java.home}/lib/jfxrt.jar</packagingIncludes> 

This doesn't work! Also, only having the jar name, excludes everything else, so if you are willing to try then try

<packagingIncludes>${java.home}/lib/jfxrt.jar,**/*</packagingIncludes> 

Jatin's answer seemed a bit complex and I tried going through the POM again & again to figure out where exactly were the system jars mentioned to be included in WEB-INF POM.

Anyways, I ended up using this solution, which wasn't working at first but after some time and some corrections worked :

I installed the jar in my local repository using the below command :

mvn install:install-file -Dfile="C:\Users\hp\Documents\NetBeansProjects\TwitterAndLoginRadiusMaven\lib\LoginRadius-1.0.jar" -DgroupId=LoginRadius -DartifactId=LoginRadius -Dversion=1.0 -Dpackaging=jar` 

After running the above command, I changed the dependency in POM to

<dependency>    <groupId>LoginRadius</groupId>    <artifactId>LoginRadius</artifactId>    <!--<scope>system</scope>-->    <version>1.0</version>    <!--<systemPath>${basedir}\lib\LoginRadius-1.0.jar</systemPath>--> </dependency> 

NOTE - See I've commented the system scope & systemPath.

Building the war now, includes this LoginRadius-1.0.jar in WEB-INF/lib

like image 181
coding_idiot Avatar answered Oct 03 '22 22:10

coding_idiot