maven-resources-plugin

华坚成
2023-12-01

介绍
Resources是处理项目中资源文件的插件.maven把我们项目中的资源分成两个部分:main resource和test resource.

插件目标

  1. resources:resources 拷贝main resourcesmain output directory.它绑定了process-resource 生命周期阶段,当执行compiler:compile插件的时候就会执行该阶段.
  2. resources:testResources 拷贝test resourcestest output directory.它绑定了process-test-resource 生命周期阶段,当执行surefire:test插件的时候就会执行该阶段.
  3. resource:copy-resources,手动拷贝资源到输出目录

使用
1、指定resources插件的编码方式

<properties>
        <!--  编码方式      -->
        <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
</properties>
			<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>

2、maven中默认会从项目的src/main/resources目录下查找资源.如果要读取其他路径下的资源的文件,就需要在build 标签中指定资源的路径.

<buid>
		<!--  过滤器资源      -->
		<filters>
			<filter>filter-values.properties</filter>
		</filters>
		<sourceDirectory>src/main/java</sourceDirectory>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!--  如果资源文件中存在变量引用,是否替换资源中的变量 
                	变量的来源:
                		1、<properties>标签中定义的变量
                		2、<build> 中定义的过滤器资源
                     -->
                <filtering>true</filtering>
                <!--  需要包含的文件资源      -->
                <includes>
                    <include>**/**</include>
                </includes>
                <!--  需要排除的文件资源      -->
                <excludes>
                    <exclude>**/*.jpg</exclude>
                </excludes>
            </resource>
        </resources>
        <testSourceDirectory>src/test/java</testSourceDirectory>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/**</include>
                </includes>
                <excludes>
                    <exclude>**/*.pdf</exclude>
                </excludes>
            </testResource>
        </testResources>
</build>

3、如果资源目录下存在二进制文件,可以使用<configuration>中使用<nonFilteredFileExtensions>根据后缀来过滤。

			<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <nonFilteredFileExtensions>pdf</nonFilteredFileExtensions>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>

4、如果资源中的${}字符不需要转义,需要在$ 前加 \,并且在<configuration>里面使用<escapeString>.

			<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <escapeString>\</escapeString>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
 类似资料: