maven打war包

目的

现在有一个maven项目,需要打成war包,但是需要把java代码打成jar包,将resources中的配置文件打到classes中,以遍在升级时随时修改,便于升级。maven配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<warName>${project.artifactId}</warName>
<!--将类文件打成jar包-->
<archiveClasses>true</archiveClasses>
<!--将资源文件打到classes目录下-->
<webResources>
<resource>
<directory>src/main/resources</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>

当设置archiveClasses为true的时候,就可以将java类文件打成jar包,webResource的目的是将resources中的资源文件打到war包中WEB-INF/classes中。
此时war包目录结构:

问题

此时会有个问题,就是jar包中也会存在resources中的资源文件,由于tomcat先读取classes中的class文件和资源文件,然后再读取lib中的jar文件,如果jar中有和classes中的资源文件相同,就会覆盖,以后读取的为准。所以我们现在虽然将resources中的文件打到war包,但是jar包中还有这些资源文件,而且会覆盖classes中的文件(如图中的jdbc.properties),所以我们修改clsses中的资源文件是无效的,此时我们需要将jar包中移除resources资源。

1
2
3
4
5
6
7
8
9
10
11
12
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 部署jar时,将会排除exclude下的文件-->
<excludes>
<exclude>conf/*.properties</exclude>
</excludes>
<filtering>true</filtering>
</resource>
</resources>
</build>

坚持原创技术分享,您的支持将鼓励我继续创作!
显示 Gitment 评论