I’m rather new to maven here. I have created a Maven Spring boot project with following structure –
..
<groupId>com.example</groupId>
<artifactId>MavenWeb</artifactId>
<version>0.0.1</version>
<packaging>war</packaging>
<name>MavenWeb</name>
<description>Maven Test Web Application</description>
<dependencies>
..
As you can see the packaging
has been set as war
. As such when the war
file is generated, my source code’s generated .class files
are generated in the war/web-inf/classes
folder. Rather than it being generated in classes folder, I’d like to generate it as jar
file and maintain it in war/web-inf/lib
folder.
I’m guessing I need to make use of the maven-jar-plugin
for this.
But I’m not sure how to move the generated jar to war/web-inf/lib
directory? Is there a simpler alternative to this?
Also how can I restrict the .class
files from being generated in war/web-inf/classes
folder?
Would really appreciate some pointers. Many thanks.
Advertisement
Answer
This is how the build
section of pom should be –
<groupId>com.example</groupId>
<artifactId>MavenWeb</artifactId>
<version>0.0.1</version>
<packaging>war</packaging>
<name>MavenWeb</name>
<description>Maven Test Web Application</description>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archiveClasses>true</archiveClasses>
<webResources>
</webResources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<generatePom>true</generatePom>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<file>
${project.build.directory}/${project.artifactId}-${project.version}.jar
</file>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
This would restrict the compiled classes from being generated in classes folder while at the same time generate a thin jar of the compiled classes and add it as web-inf/lib/MavenWeb-0.0.1.jar
.