I've a folder named extra-jars in the src/main/rescource, but how can I include these in the build? I want them to be put in the lib folder with the rest of the jars. I tried including them through , but that didnt work.
Asked
Active
Viewed 1.1k times
2 Answers
10
For jars that are not distributed by a Maven repository, the simplest way is place the extra jars in the src/main/webapp/WEB-INF/lib
directory of your project. Maven will by convention, include everything under the src/main/webapp
in the final war artifact.
An additional method is to use the Maven War Plugin. It has the ability to add additional files to the final war artifact though plugin configuration.
In the build section of the POM add something like the following:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webResources>
<resource>
<directory>src/main/resource/extra-jars</directory>
<includes>
<include>*.jar</include>
</includes>
<targetPath>WEB-INF/lib</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
The <configuration>
section is the key to adding additional files.
- The
<directory>
element defines the source location of the resource. The path is relative topom.xml
. - The
<includes>
element defines what files found in the above directory to include. - The
<targetPath>
element defines the destination directory in the WAR to which the files are copied.

cs95
- 379,657
- 97
- 704
- 746

Brent Worden
- 10,624
- 7
- 52
- 57
2
These jars should be added as Maven dependencies, not by copying them into the lib folder. This is the sort of thing Maven is designed for.

TrueDub
- 5,000
- 1
- 27
- 33
-
That's something I tried for the last three days, but these last jars won't startup my program if I retrieved them with a dependency, so I did it this way. It's not the Maven way, but there was no other way. – TDC Mar 05 '14 at 12:56
-
What error messages were you getting? Adding jars to the lib folder and classpath is Maven's bread-and-butter, so maybe we can assist you with that – TrueDub Mar 05 '14 at 12:58
-
It was with the Birt Run Time Viewer. Some jars weren't correct and I couldn't retrieve the correct ones for a reason. With those jars (from the dependency) it gave me a catalina internal error etc and with the 'local' jars it worked/s. – TDC Mar 05 '14 at 13:01
-
Sounds like your "local" jars are of a different version that the ones Maven was retrieving. Can you verify that? Alternatively, you can add your "local" ones to your local maven repo and retrieve them from there. This is a simple one-command procedure. However, if the app you're building will be re-built by others this will not be a good idea. – TrueDub Mar 05 '14 at 13:05
-
It will be re-built by others indeed. So that's why I was thinking to put them in the resource folder. – TDC Mar 05 '14 at 13:15
-
Do you have a remote repository e.g. Nexus or Artifactory? Frankly, if others will be building it using Maven it should resolve all dependencies in the Maven way - are you sure your versions are the same? – TrueDub Mar 05 '14 at 13:33