maven项目常用技巧: profile与资源过滤

一般的项目都会运行在不同的环境上,比如我们有本地环境、开发环境、测试环境、生产环境等等。这些不同的环境,必然有不同的配置。比如日志级别,开发环境我们一般设置成debug,而生产环境一般设置成warn。我们肯定不希望:手动修改项目配置文件,然后才打包发布到不同的环境


这个时候我们可以使用maven的profile,在pom.xml中为不同的环境配置不同的profile。

<project>
	<profiles>
        <profile>
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <zoo.url>172.17.103.107:2181</zoo.url>
                <log.level>DEBUG</log.level>
            </properties>
        </profile>
		<profile>
            <id>dev</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <zoo.url>172.17.103.108:2181</zoo.url>
                <log.level>INFO</log.level>
            </properties>
        </profile>
	</profiles>
</project>

如果我们需要打本地环境的包,可以激活本地环境的profile:



如果我们需要打开发环境的包,可以激活开发环境的profile:


可以看到:我们只需要执行不同的打包脚本,就可以打出不同环境需要的包,而不需要去修改项目中的配置文件,这就是profile的作用。


那什么是maven的资源过滤?很简单,上面我们为本地环境和开发环境配置了不同的profile,我们代码怎么去读取这些配置的值呢?我们可以定义一个config.properties,放在src/main/resources/下面:

zoo.url=${zoo.url}
log.level=${log.level}


接下来我们需要在pom.xml中开启资源过滤:目的是为了让maven将文件中的占位符替换成实际值。
<build>
	<!-- 替换配置文件中的数据项 start -->
	<resources>
		<resource>
			<directory>src/main/resources</directory>
			<filtering>true</filtering>
		</resource>
	</resources>
	<testResources>
		<testResource>
			<directory>src/test/resources</directory>
			<filtering>true</filtering>
		</testResource>
	</testResources>
	<!-- 替换配置文件中的数据项 end -->
	
	
</build>


如果我们激活本地环境的profile,可以看到最终构建出的config.properties内容如下:



如果我们激活开发环境的profile,可以看到最终构建出的config.properties内容如下:




通过maven的profile和资源过滤,我们只需要在不同的环境激活对应的profile,配置信息就会自动改变,不需要我们取修改项目中的代码或者配置文件,所有变量都是定义在pom.xml中的。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值