资源文件的配置
有时候有些配置文件通常与.java文件一起放在src/main/java目录(如mybatis或hibernate的表映射文件)。希望把该目录中的资源也复制到classes目录中。这些情况下就需要在Pom.xml文件中修改配置了。否则导出时,只会导出java目录中的class文件,而不包括其中的配置文件和其他文件
可以有两种方法:
- 一是在
<build>
元素下添加<resources>
进行配置(一般都用这种)。 - 另一种是在
<build>
的<plugins>
子元素中配置maven-resources-plugin
等处理资源文件的插件。
配置resouces方式
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>/*.properties</exclude>
<exclude>/.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/.properties</include>
<include>*/.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
配置资源处理插件
-
{<plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>copy-xmls</id> <phase>process-sources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>{basedir}/target/classes</outputDirectory> <resources> <resource> <directory>{basedir}/src/main/java</directory> <includes> <include>*/.xml</include> </includes> </resources> </configuration> </execution> </executions> </plugin>}
另一个插件也能完成相同的功能
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
打包时文件相关的配置
打包时target/classes目录中的资源文件会和class字节码一起被打进jar包或war包中。有时候默认的情况不能完全满足需求,如target/classes目录中的一些文件不希望打入jar包中,就需要额外配置maven-jar-plugin插件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<excludes>
<exclude>*.properties</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>xxxxxx.ConsoleLauncher</mainClass>
</manifest>
</archive>
</configuration>
</plugin>