maven默认情况下会把src/main/resources下的文件和class文件一起打到jar包内部,但是有很多场景下都需要把resources下的文件打包到jar包外面,这样修改resources目录下的文件就不需要重新打jar
假设目录结构如下,resources目录下有三个文件
默认打好的jar包如下,即resources下的文件打到了jar包里面
如果想resources目录下的部分或者全部文件不打到jar包内部,可以使用manen下面的配置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.txt</include>
</includes>
<excludes>
<exclude>*.xml</exclude>
<exclude>*.yaml</exclude>
</excludes>
</resource>
</resources>
</build>
这样a.xml和b.yaml就不会打到jar包中了
maven还有一个maven-resources-plugin可以实现,在打包的时候把resources目录下的文件拷贝到指定的目录下,这样就不需要用户自己去拷贝了,
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/conf</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
编译好之后,会在target目录下生成conf目录并且把resources目录下的所有文件都自动拷贝到target/conf/目录下,如下
联合上一章中的maven配置,就可以实现把工程中对外的依赖(依赖的jar包,依赖的resources文件)打包到jar外面,例如把依赖的jar包打包到lib目录下,把依赖的resources文件打包到conf目录