Maven插件之maven-resources-plugin

应用的资源文件不是源代码,一般用来给应用提供熟悉配置等功能。Maven中的资源文件默认存在于src/main/resources、src/test/resources中。项目在打包的时候怎么把资源文件编译、打包呢,主要用到了maven的一个插件:maven-resources-plugin。

三个目标(goal)

maven-resources-plugin有三个goal:

  • resources:resources:用来将目录中的资源文件src/main/resources拷贝到编译目录${project.build.outputDirectory}。这个目标默认绑定到了Maven的process-resources阶段,所以process-resources阶段被执行,这个目标就会自动触发。
  • resources:testResources:用来将目录中的资源文件src/test/resources拷贝到编译目录${project.build.testOutputDirectory}。这个目标默认绑定到了Maven的process-test-resources阶段,所以process-test-resources阶段被执行,这个目标就会自动触发。
  • resources:copy-resources:用来将指定目录中的资源文件拷贝到指定目录,注意需要自己设置资源文件目录和目标目录。

对resources插件的配置

如果默认的情况不能满足我们的需求,比如说资源文件中使用了占位符${},需要由属性文件替换。那就需要我们进行相关的配置,有两个地方需要进行配置:

  1. <build />下
  2. 在maven-resources-plugin插件下

1、<build />下

<filters>
    <filter>src/main/filters/dev.properties</filter>
</filters>
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>*.properties</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <excludes>
            <exclude>*.properties</exclude>
        </excludes>
    </resource>
    <resource>
        <directory>${basedir}/${environment.dir}</directory>
        <includes>
            <include>${environment}.properties</include>
        </includes>
    </resource>
</resources>
<testResources>
    <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>*.properties</include>
        </includes>
    </testResource>
</testResources>

<build/>下面配置的是全局信息,其下配置的解释:

  • <filters />表示用来进行属性替换的属性文件路径。属性文件是用来替换资源文件中的变量的,比如属性文件中有个个键值对”key1=val1“,那么在资源文件中有个”${key1}“,就会被替换为”val1“(假设资源文件开启了filter),默认路径为”${basedir}/src/main/filters“
  • <resources />配置main的资源信息
    • <directory/>配置资源文件的原始目录
    • <filtering/>表示是否开启过滤,过滤的意思就是用属性文件来替换资源文件中的变量
    • <includes/>表示包含哪些文件
    • <excludes/>表示去除哪些文件
  • <testResources />配置test的资源信息

2、maven-resources-plugin下

在插件下的配置在标签<configuration/>下,和全局使用方式一样,这里列举几个官网的例子:

2.1、设置字符集

a、指定project.build.sourceEncoding属性,maven-resources-plugin会自动使用这个属性作为字符集

<project ...>
 ...
 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   ...
 </properties>
 ..
</project>

b、在maven-resources-plugin插件里自己设置

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          ...
          <encoding>UTF-8</encoding>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

2.2、设置资源文件目录

maven里默认的资源文件路径是src/main/resources

<project>
 ...
 <build>
   ...
   <resources>
     <resource>
       <directory>[your folder here]</directory>
     </resource>
   </resources>
   ...
 </build>
 ...
</project>

2.3、拷贝资源到其他文件

使用copy-resources这个目标,可以将这个目标绑定到某个阶段上

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- 绑定到某个阶段上 -->
            <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>
  ...
</project>

2.4、以后缀过滤文件

除了可以使用<excludes/>去除某些文件外,还可以

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          ...
          <nonFilteredFileExtensions>
            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
            <nonFilteredFileExtension>swf</nonFilteredFileExtension>
          </nonFilteredFileExtensions>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

转载于:https://my.oschina.net/cregu/blog/3018425

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值