maven零碎使用-filter

为了满足项目在不同环境中的配置要求,我们在发版时要十分注意资源文件的配置,如果配置复杂就会容易出错。这里可以使用maven的中的filter和profile来解决这个问题。

首先展示已经配置好pom文件(profiles和build)

<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<env>dev</env>
				
			</properties>

		</profile>
		<profile>
			<id>test</id>
			<properties>
				<env>test</env>
				<envlog>test</envlog>
			</properties>

		</profile>
		<profile>
			<id>produce</id>
			<properties>
				<env>produce</env>
				<envlog>produce</envlog>
			</properties>
            <activation>
                <!--默认启用的是dev环境配置 -->
                <activeByDefault>true</activeByDefault>
             </activation>
		</profile>
	</profiles>
	<build>
		<finalName>${project.artifactId}-${project.version}</finalName>
		<filters>
			<filter>src/main/filters/db-${env}.properties</filter>
			<filter>src/main/filters/log-${envlog}.properties</filter>
		</filters>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
			
		</resources>
	</build>

详细解释:

目的:希望在打包时通过一个标记来告诉maven用某个过滤文件去替换配置文件

过滤文件(以测试环境为例) db-test.properties

jdbc.connection.url=testurl
jdbc.connection.username=testusername 
jdbc.connection.password=testpassword 

配置文件   db.properties

jdbc.connection.url=${jdbc.connection.url} 
jdbc.connection.username=${jdbc.connection.username} 
jdbc.connection.password=${jdbc.connection.password} 

 

图1

 

原理:打包的时候maven读取build标签下的信息:

finalName表示今后打包的包名,注意现在maven要求写成project.artifactId,不能省掉project. 

filters表示过滤器,也就是你若干环境的配置文件,图1中src/main/filters下面的文件(注意filters文件的位置,不要乱放)

resources表示资源文件存在的位置  <filtering>true</filtering> 表示对这个文件开启过滤器

例如maven读到  <filter>src/main/filters/db-${env}.properties</filter>  就会根据mvn命令中的 -P 来了解用户要使用那个profile,例如-P produce 那么就会把文件名称替换为src/main/filters/db-produce.properties,然后就去filter文件夹下找这个文件,最终去替换resource下的文件,resource文件夹下的文件入上面提到的db.properties一样里面的value是${xxx}这种形式表示,maven会根据xxx去filter下文件中的key去替换的

要注意的是:如果resource中有多个properties文件,多个文件中还有相同的key,maven替换时会把同名的key的value都替换掉,所以切记多个properties文件中的key一定不要一样,否则后果很严重

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值