神器Maven——项目自动化配置部署

本文分享了一位工程师在百度大客户关键词推荐项目中利用Maven实现自动化部署的经验。通过介绍Maven的属性、Profile和资源过滤特性,解决了线下项目部署过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    来百度上研一个半月了,屁股还没做热,就进入大客户关键词推荐项目组,虽然是个线下的项目,但是我毕竟算刚来的,只能靠加班来迎头赶上了,不过好在功夫不负有心人,上周五终于将这个项目上线了,这个项目总体来说并不难,而且还是升级,所以一个半月就搞定了,上线时遇到让人崩溃的问题。由于是个线下项目,就一台机器让项目使用,老项目和新项目都在一起,这就意味这必须让新项目很快部署成功,因为在部署的时候老项目不能使用了,可是由于经验不足,根本没做自动化部署,而是手动地将测试环境切换为生产环境,周末总结上线过程,偶然发现maven可以灵活的构建项目,达到一键切花环境的效果。

    一个优秀的构建系统必须足够灵活,它应该能够让项目在不同环境下都能成功地构建。例如,典型的项目都会有开发环境、测试环境和生产环境(产品环境),这些环境的数据库配置不尽相同,那么项目构建的时候就需要能够识别所在环境并使用正确的配置。还有一种常见情况,项目开发了大量集成测试,这些测试运行起来非常耗时,不适合在每次构建项目的时候都运行,因此需要一种手段能让我们在特定时候才激活这些集成测试Maven为了支持构建的灵活性,内置了三大特性,即属性、Profile和资源过滤。


让我彻底解决了项目自动化部署难题的是资源过滤特性的运用,这点我 会详细介绍,稍微简单地普及一下属性和Profile特性吧。

首先Maven属性,我们可以通过<properties>元素定义一个或多个Maven属性,然后在POM的其他地方使用${属性名}的方式引用该属性,这种做法最大意义在于消除重复,而且如果日后涉及到升级版本,工作量会大大降低,而且减少错误率。

这不是Maven属性的全部,事实上只是6类Maven属性的一类而已,这6类属性分别为:

1.内置属性:主要有两个常用的内置属性——${basedir}表示项目根目录,即包含pom.xml文件的目录;${version}表示项目版本;

2.POM属性:用户可以使用该类属性引用POM文件中对应元素的值。例如:${project.artifactId}就对应了<project><artifactId>元素的值,常用的POM属性有:${project.build.sourceDirectory}:项目的主源码目录,默认为/src/main/java/. ${project.build.directory}:项目构建输出目录,默认为/target/。

3.自定义属性:用户通过<properties>来定义自己的属性

4.Settings属性:与POM属性相似,用户可以用settings.开头的属性引用settings.xml文件的XML元素的值,如常用${settings.localRepository}指向用户本地仓库的地址

5.java属性:所有java系统属性都可以使用Mave属性引用,例如${user.home}指向了用户目录

6.环境变量属性:所有环境变量都可以使用env.开头的Maven属性引用,例如,${env.JAVA_HOME}指代了java_home环境变量的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值