Maven学习(四) - 插件maven-resources-plugin

Resources插件负责处理项目资源文件并拷贝到输出目录。Maven将main resources和test resources分开,一般main resources关联main source code,而test resources关联test source code。

Resources插件目标有三个:

  1. resources:resources,拷贝main resources到main output directory。它绑定了process-resources生命周期阶段,当执行Compiler:compile插件目标前就会执行此阶段。
  2. resources:testResources,拷贝test resources到test output directory。它绑定了process-test-resources生命周期阶段,当执行surefire:test插件目标前就会执行此阶段。
  3. resources:copy-resources,手动拷贝资源到输出目录

可以指定resources插件读取和写入文件的字符编码,比如ASCII,UTF-8或UTF-16。也可以指定${project.build.sourceEncoding}属性。

<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>中定义过滤器资源。

<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。

<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>

将文件输出到{basedir}/target/extra-resources中。

例如现有项目就是将resources的文件输出到conf文件下:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<executions>
			<execution>
				<id>copy-resource</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>false</filtering>
						</resource>
					</resources>
				</configuration>
			</execution>
	</executions>
</plugin>

 

参考文档:

  1. http://maven.apache.org/plugins/maven-resources-plugin/

转载于:https://my.oschina.net/u/2377110/blog/1584204

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值