Maven: how to get a war package with resources copied in WEB-INF?
Solution 1
either configure the outputDirectory
parameter of resources:resources
plugin, or put your files under src/main/webapp/WEB-INF/
directory.
resource plugin
EDIT:
This configuration is working for me:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<id>default-copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
you can run a phase in the form somePhase
or a goal somePlugin:someGoal
. The phase invocations will invoke all plugins goals hooked on phases in interval [validate,phase] in order, so there's no need to explicitly call them.
Solution 2
Web resources are not the same as java resources, which should be placed in the classpath. Web resources are processed via the war plugin and should be placed into src\main\webapp\WEB-INF\
. In this case, it will work automatically without any additional configuration in the pom.xml
Randomize
Just a random developer that does NOT believe in software development and people
Updated on July 22, 2022Comments
-
Randomize almost 2 years
when I create a war package with maven, files and directories under the directory "src/main/resources" are copied in /WEB-INF/classes instead of /WEB-INF. How can I get them copied in /WEB-INF?
thanks, rand
UPDATE: in my pom now I use this:
<plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.4.3</version> <executions> <execution> <id>copy-resources</id> <!-- here the phase you need --> <phase>war</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>myapp/target/WEB-INF</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin>
and I launch mvn with:
mvn -Dmaven.test.skip=true clean package resources:copy-resources
but I got:
[INFO] One or more required plugin parameters are invalid/missing for 'resources:copy-resources' [0] Inside the definition for plugin 'maven-resources-plugin' specify the following: <configuration> ... <outputDirectory>VALUE</outputDirectory> </configuration>. [1] Inside the definition for plugin 'maven-resources-plugin' specify the following: <configuration> ... <resources>VALUE</resources> </configuration>.
I'm using maven 2.2 and the snippet basically is the same of the documentation any idea?