【maven】5、Maven 多环境部署(filters、resources、profiles)
来源:互联网 发布:win10 1709 知乎 编辑:程序博客网 时间:2024/05/17 22:39
在项目开发过程中,我们会用到很多配置文件,如db.properties、application.properties、logback.xml等。大体目录结构如下:
比如项目中datasource-context.xml中使用的连接mongodb配置
<property name="username" value="${mongo.username1}" /> <property name="password" value="${mongo.password1}" /> <property name="database" value="${mongo.database1}" /> <property name="mechanism" value="${mongo.mechanism1}" />
在connector.properties配置文件中配置具体参数值
mongo.username1=usernamemongo.password1=passwordmongo.database1=testmongo.mechanism1=SHA-1
在部署多种环境(本地开发环境、测试环境、生产环境)时username、password值都需要改变。Maven提供了一种解决方案,即使用filters、resources、profiles功能来解决多种环境部署。
以下是在项目中实际使用:
首先在pom.xml文件,build元素下添加resources
<build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>${basedir}/src/main/resources</directory> </resource> <resource> <directory>${basedir}/src/main/resources-${environment}</directory> </resource> </resources> </build>
在build同级添加profiles
<profiles> <profile> <id>test</id> <properties> <environment>test</environment> </properties> </profile> <profile> <id>production</id> <properties> <environment>production</environment> </properties> </profile> <profile> <id>production-hk</id> <properties> <environment>production-hk</environment> </properties> </profile> </profiles>
Java项目创建默认的资源路径为${basedir}/src/main/resources
执行打包命令时添加 -P${environment}
, Maven会使用对应的资源路径覆盖${basedir}/src/main/resources
mvn clean assembly:assembly -DskipTests -Pproduction 项目有子项目war、jar共存
mvn clean compile war:war -Pproduction 打war包
resources作用
项目中多环境配置文件存放在不同的production-${environment}下,resources中指明有哪些环境。
profiles作用
profiles定义了每个部署环境的标识,打包命令中-Pproduction,production就是对应的标识(profile id)
以上是自己在项目中具体使用方式,但是关于Maven多环境配置一般都是filters、resources、profiles一起组合使用,我们这里还差一个filters功能,那么我们就看看filters到底何方神圣。
filters配置
一般使用filters是在build元素下添加filters子元素,与resources同级。
<filters> <filter>src/main/filters/connector-${env}.properties</filter> <filter>src/main/filters/application-${env}.properties</filter> </filters>
filters作用
filters中指定需要进行替换的资源文件,打包时根据${profile id}替换对应的资源文件。
比如需要打test环境下的war包,那么我们项目中${basedir}/src/main/resources/connector.properties
文件会被${basedir}/src/main/filters/connector-test.properties
替换。
总结filters
对比一下使用filtes和没有使用filters区别
1、没有使用filters:Maven会根据profile id将对应resources-${profile id}资源文件整体覆盖到src/main/resources下,全局替换。
2、使用filters:Maven会根据指定filter文件进行替换,指定替换。
本章中介绍了项目多环境部署中涉及配置文件处理方法,使用到Maven的filters、resources、profiles。
使用filters多出一个平时很少使用到的文件夹filters,那么Maven建议我们项目应该创建哪些文件夹嗯?下章见!
Maven pom.xml主体结构
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <build> <finalName>${project.artifactId}</finalName> <filters> <!-- 指定 filter --> <filter>src/main/filters/connector-${env}.properties</filter> <filter>src/main/filters/application-${env}.properties</filter> </filters> <resources> <resource> <directory>${basedir}/src/main/resources</directory> </resource> <resource> <directory>${basedir}/src/main/resources-${environment}</directory> </resource> </resources> <pluginManagement> <plugins> <plugin> ...... </plugin> ...... </plugins> </pluginManagement> </build> <profiles> <profile> <id>test</id> <properties> <environment>test</environment> </properties> </profile> <profile> <id>production</id> <properties> <environment>production</environment> </properties> </profile> <profile> <id>production-hk</id> <properties> <environment>production-hk</environment> </properties> </profile> </profiles>
- 【maven】5、Maven 多环境部署(filters、resources、profiles)
- Maven 使用profiles filters resources build 打包不同配置开发环境及打包
- maven resources profiles
- maven集成eclipse根据resources profiles filtering进行不同环境打包部署
- maven+eslipse 多环境打包 profiles
- maven profiles
- maven profiles
- maven profiles
- maven profiles
- maven profiles
- Maven Profiles
- ssm中maven中profiles多环境配置
- 关于maven中profiles多环境的配置
- maven—profiles区分环境的配置文件
- maven分环境部署
- maven的profiles节点
- maven管理多环境开发部署
- springboot maven 配置多环境部署
- android加载图片时避免出现OOM(OutOfMemory)
- hdu1232 畅通工程 并查集
- 浏览器标准模式和怪异模式之间的区别是什么——整理自网页
- ext tab 下grid不出现滚动条问题
- scrapy使用总结
- 【maven】5、Maven 多环境部署(filters、resources、profiles)
- redis介绍和安装
- 配置butterknife8.0
- [舰队收藏]舰娘命名学
- Android MeasureSpec完全解析——手把手教你分析
- bmp2yuv
- 初学分享,求指教
- EXTjs 在IE10下显示不全问题
- 欢迎使用CSDN-markdown编辑器