MAVEN利用Profile构建不同环境的部署包

通常,项目要在多个环境部署,每种环境都有各自的资源配置参数,比如:数据库连接、Redis服务器地址等等。 所以,各个环境打包出来的资源是不一样的,如果手动的修改,费时费力。我们可以利用MAVAN的profiles命令来自动化构建不同的部署包。

项目资源配置 一般情况下,项目引用的资源文件可以分为

公共资源文件 各自环境的差异化资源文件 在项目实际运行的时候,所引用的资源文件全部都在一个资源目录下,而存放的时候根据类型不同存放。 所以,构建部署包的时候,利用maven-resources-plugin插件和profiles命令将目标环境的差异化资源复制到公共资源位置,只需要把目标环境差异化的资源文件复制与公共资源一致的目录下即可。

在pom.xml中配置profiles ... dev <package.environment>dev</package.environment> true product <package.environment>product</package.environment> test <package.environment>test</package.environment> ... profiles节点中,定义了三种环境:dev(默认激活dev环境)、test、product。可以在各自的环境中添加需要的property值。

建立三个文件夹(dev,test,product)存放不同环境的各种资源。 maven标准目录中,提供了一个filters目录用于存放资源过滤文件。

src/main/filters/dev src/main/filters/test src/main/filters/product 请避免在resources目录中创建,因为resources目录中的文件默认情况下是不会被过滤的。 如果旧工程中已经在resources目录中创建不同环境的资源目录的时候,如:

src/main/resources/dev src/main/resources/test src/main/resources/product 这时候必须要在pom.xml中配置节点,用于排除各个环境的资源文件。这样,src/main/resources目录中就只包含有公共资源。 注:如果在eclipse中利用maven构建部署包,而eclipse默认会开启自动编译(Build Automatically),自动会把resources目录的全部文件编译到class的输出目录中,就算在pom.xml中配置节点用于过滤资源也是不起作用的。而我们不希望输出的部署包中存在不是目标环境的配置(有可能被泄露),所以推荐将不同环境的资源文件放于filters目录,而不是resources目录。

... src/main/resources/conf src/main/resources/conf/dev src/main/resources/conf/product src/main/resources/conf/test true ... 配置maven-resources-plugin插件 在构建WAR包的时候会经过资源文件处理阶段,maven-resources-plugin则用来处理资源文件。 配置maven-resources-plugin插件,针对不同环境通过命令行或者Profile传入属性的值,复制目标环境的资源,从而构建出不同的WAR包。 ... org.apache.maven.plugins maven-resources-plugin 2.6 copy-resources validate copy-resources ${project.build.outputDirectory} true src/main/resources/conf/${package.environment} conf false ...

转载于:https://juejin.im/post/5b9b5b64e51d450e9e43f299

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值