maven的资源过滤

在maven中实现资源的过滤需要结合两个特殊的定义,分别是:profiles和resources, 往往还要结合filters 标签一起使用

项目中我们往往会编写不同的配置文件,来针对不同的运行环境,如开发、测试、生产环境等。通过定义一系列的配置信息,然后指定其激活条件。通过maven的pom文件,我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

<profiles>
    <profile>
        <id>dev</id>
        <properties>
   	   <env>dev</env>
</properties> <activation>
  	<!--默认启用的是dev环境配置 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>

    <profile>
        <id>product</id>
        <properties>
            <env>product</env>
        </properties>
    </profile>

    <profile>
        <id>qa</id>
        <properties>
            <env>qa</env>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <env>test</env>
        </properties>
    </profile>
    <profile>
        <id>dmz</id>
        <properties>
            <env>dmz</env>
        </properties>
    </profile>
</profiles>

resources是指定maven编译资源文件指定到何处的,例如maven的标准资源目录结构是src/main/resources(这个在超级pom中定义到了),maven进行编译时候就会将resources中的资源文件放到web的WEB-INF/classes下.具体如何和资源目录有关系,后面结合的时候后讲到。 
pom中定义的resources:

<resources>
    <resource>
        <directory>src/main/resources</directory>
	<filtering>true</filtering>
</resource></resources>
filtering设置为true很关键,不然引用不到profiles中的内容。如何通过配置指定编译时的配置文件呢,结合profiles的激活机制能更好的使用filers目录中的内容,pom.xml中的内容如下:
<build><filters>
    <filter>src/main/resources/${env}.properties</filter>
</filters>
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>*.properties</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>
</build>

Maven为我们提供了一个指令可以查看当前处于激活状态的profile都有哪些,这个指定就是:

mvn help:active-profiles

除了上述的默认的激活方式,还可以使用手动方式激活 :mvn package –P test,编译时就会去找id为test的属性对应的配置文件了。

还可以根据不同的激活条件进行设置:

1、根据jdk环境来激活

<profiles>  
       <profile>  
              <id>profileTest1</id>  
              <jdk>1.5</jdk>  
       </profile>  
<profiles>  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2、根据操作系统环境来激活
<profiles>  
       <profile>  
            <id>profileTest1</id>  
            <activation>  
              <os>  
                   <name>Windows XP</name>  
                   <family>Windows</family>  
                   <arch>x86</arch>  
                   <version>5.1.2600</version>  
              </os>  
            </activation>  
       </profile>  
</profiles> 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
3、根据文件是否存在激活
<profiles>  
       <profile>  
            <id>test</id>  
            <activation>  
              <file>  
                   <missing>target</missing>  
              </file>  
            </activation>  
       </profile>  
</profiles>






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值