Resources插件负责处理项目资源文件并拷贝到输出目录。Maven将main resources和test resources分开,通常main resources关联main source code,而test resources关联test source code。apache
Resources插件目标有三个:maven
能够指定resources插件读取和写入文件的字符编码,好比ASCII,UTF-8或UTF-16。也能够指定${project.build.sourceEncoding}属性。ui
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>
也能够经过<configuration>指定编码编码
<build> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
默认状况下,Maven会从项目的src/main/resources目录下查找资源。若是你的资源不在此目录下,能够用<resources>标签指定,同时也支持多个目录。插件
<build> <resources> <resource> <directory>src/main/resources1</directory> </resource> <resource> <directory>src/main/resources2</directory> </resource> </resources> </build>
有的时候,资源文件中存在变量引用,能够使用<filtering>标签指定是否替换资源中的变量。变量的来源为pom文件中的<properties>标签中定义的变量。也能够在<build>中定义过滤器资源。code
<build> <filters> <filter>filter-values.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
可能目录下的资源文件都须要被使用,能够使用<includes>和<excludes>来精细控制。生命周期
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.txt</include> <include>**/*.rtf</include> </includes> <excludes> <exclude>**/*.bmp</exclude> <exclude>**/*.jpg</exclude> <exclude>**/*.jpeg</exclude> <exclude>**/*.gif</exclude> </excludes> </resource> <resources> </build>
若是资源中原本存在${}字符,不须要被替换,能够在$前加\,并在<configuration>中使用<escapeString>。资源
<plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> <configuration> <escapeString>\</escapeString> <encoding>UTF-8</encoding> </configuration> </plugin> <plugins>
另外目录下存在二进制文件,须要排除,也能够在<configuration>中使用<nonFilteredFileExtensions>根据后缀来过滤。文档
<!-- 过滤后缀为pdf和swf的文件 --> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> <configuration> <encoding>UTF-8</encoding> <nonFilteredFileExtensions> <nonFilteredFileExtension>pdf</nonFilteredFileExtension> <nonFilteredFileExtension>swf</nonFilteredFileExtension> </nonFilteredFileExtensions> </configuration> </plugin> <plugins>
若是你须要在其余阶段拷贝资源文件,能够使用插件目标copy-resources。get
<build> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> <executions> <execution> <id>copy-resources</id> <!-- here the phase you need --> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/extra-resources</outputDirectory> <resources> <resource> <directory>src/non-packaged-resources</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build>
参考文档: