构建项目是一个麻烦的事,因为项目运行的环境有开发,测试,生产环境等等。不同的环境下的各种配置又不一样。传统的做法是每当打一个war包时去根据它要运行的环境去修改相应的配置信息,但是人工改动是不可靠的,尤其是当配置信息很多的时候。数据库连接信息、redis配置信息、短信接口配置、其他依赖的服务地址等等,这么多的信息修改错了一项,项目都不能完全正常的运行了。幸运的是我们可以依赖maven的profile属性去配置好各种配置信息,在打包的时候只要指定一个参数就能够按照我们设想构建出相应环境下的war包。
假设这是Java的一个web项目,里面的数据库的配置信息会根据不同的运行环境变化而变化。
1. 添加会根据不同的环境变化的配置信息
我们的src/main/resources/jdbc.properties文件如下:
jdbc.driver=${profile.jdbc.driver} jdbc.url=${profile.jdbc.url} jdbc.name=${profile.jdbc.name} jdbc.password=${profile.jdbc.password}这里我们用${name}这样的方式来替换上述配置中的value,比如${profile.jdbc.name}来替换了我的数据库用户名。这里的名称可以随意命名,只要和后续步骤中保存一致就可以。但是不要和spring配置中的一样,那样的话sping中配置就会在打包时也被替换成真实环境下的配置,虽然那样不影响运行,但是jdbc.properties就没有意义了。所以这里统一加上了profile.的前缀。
2. 添加profile属性
在pom.xml中添加如下配置信息:
<profiles> <profile> <id>dev</id> <properties> <profile.jdbc.driver>com.mysql.jdbc.Driver</profile.jdbc.driver> <profile.jdbc.url>jdbc:mysql://localhost:3306/dev</profile.jdbc.url> <profile.jdbc.name>dev</profile.jdbc.name> <profile.jdbc.password>dev-password</profile.jdbc.password> </properties> </profile> <profile> <id>test</id> <properties> <profile.jdbc.driver>com.mysql.jdbc.Driver</profile.jdbc.driver> <profile.jdbc.url>jdbc:mysql://192.168.10.100:3306/test</profile.jdbc.url> <profile.jdbc.name>test</profile.jdbc.name> <profile.jdbc.password>test-password</profile.jdbc.password> </properties> </profile> </profiles>
上述配置添加了一个profiles属性,profiles下有两个profile配置,每个profile包含了id和properties两个属性,其中properties中可以包含各种我们想要配置的属性。这里我配置了在jdbc.properties有关数据库连接的信息。这里我们配置了dev和test两个profile,它们的数据库配置信息各不相同。
3. 添加profile属性
在pom.xml的build标签下中添加如下配置:
<build> <finalName>maven-profile</finalName> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
关于resources这个标签的用途不是这里的重点,这里我们只关注我们配置的这两个属性:directory和filtering。上述配置是在src/main/resources这个资源文件目录下开启资源过滤的功能。
4. 打包构建
配置完上述三项之后,我们运行如下命令:
mvn clean install -P dev
然后查看war包WEB-INF/classes/jdbc.properties:
jdbc.driver=com.mysql.profile.jdbc.Driver jdbc.url=profile.jdbc:mysql://localhost:3306/dev jdbc.name=dev jdbc.password=dev-password
这里的-P dev指定了开启该项目的一个profile,就是说我们第2步中配置的id为dev的这个profile的properties中的各项属性就会在这个项目中生效:
profile.jdbc.driver=com.mysql.profile.jdbc.Driver profile.jdbc.url=profile.jdbc:mysql://localhost:3306/dev profile.jdbc.name=dev profile.jdbc.password=dev-password
所以jdbc.properties中的属性就会被替换掉。
同理,我们在打包时可以通过替换-P来随意的切换我们的运行环境。
5. 配置默认的环境信息
通过以下配置,不用-P默认就是打包dev的配置信息:
<profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <profile.jdbc.driver>com.mysql.profile.jdbc.Driver</profile.jdbc.driver> <profile.jdbc.url>profile.jdbc:mysql://localhost:3306/dev</profile.jdbc.url> <profile.jdbc.name>dev</profile.jdbc.name> <profile.jdbc.password>dev-password</profile.jdbc.password> </properties> </profile>
总结
我们在上述的第3步的配置中指定了在src/main/resources下开启了资源过滤,所以该目录下的相应的${name}属性就会被maven中的属性所代替.而通过-P我们激活了第2步中的相应的profile,该profile中的属性就可以被我们使用,所以在打包时我们在第1步中所配置的数据库信息就会根据${name}被替换成profile中的相应属性。
相关推荐
主要介绍了Maven根据不同环境打包不同配置文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
当前案例中包含一整套的代码和word文档,非常适合新手... 主要是通过maven打包加载不同环境的properties文件 然后将对于的属性绑定到指定的实体对象中;然后通过调用接口可以看到加载不同环境控制台打印的内容是不一样的
Spring Boot项目使用maven-assembly-plugin根据不同环境打包成tar.gz或者zip
当前案例中包含一整套的代码和word文档,非常适合新手代码简单易懂; 主要是通过maven打包配合springboot application.properties文件配置实现通过打包来完成加载不同环境的配置内容;
NULL 博文链接:https://clojure.iteye.com/blog/2091511
工程运行环境有研发,测试和生产,不同的运行环境配置不同,maven 打包时指定文件目录,使用指定的文件夹下的配置文件。
工程运行环境有研发,测试和生产,不同的运行环境配置不同,使用maven 占位符,不同环境使用不同的配置
主要介绍了使用maven profile指定配置文件打包适用多环境的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Maven搭建spring mvc环境,应用spring3.2.2 jar包, 代码中包含有测试例子、配置文件等,非常好的一个实例。 希望大家喜欢。
springboot项目框架,多数据源配置,日志,maven多环境打包,集成redis
主要介绍了浅谈maven 多环境打包发布的两种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本资源只提供安装文件,其中maven包是3.6.0版本,用于maven环境配置,离线包用于生成eclipse选项卡中的maven项
Maven2_Struts2.0打包实例 环境:Eclipse3.3.2 jdk 1.5 tomcat:5.5.6 apache-maven-2.0.9 开发步骤: * 安装Eclipse对maven的插件 * 先用命令建一个Web项目:mvn archetype:create -DgroupId=...
myEclipse下配置maven开发环境以及创建maven项目运行打包
5. 配置 STS-3.3.0.RELEASE中的maven环境 2 6. 创建MAVEN项目 4 7. 配置项目pom.xml 6 8. 编译打包maven项目 9 9. MAVEN 查找类库: 10 10. MAVEN本地jar包初始化 11 11、MAVEN安装到私服(依赖于Maven Nexus配置)...
maven项目、springboot项目使用assembly插件打包,实现项目可配置化、生成系统日志、jar文件与项目分离,并生成windows与linux环境下启动、停止等操作的脚本文件。
maven打包main方法作为起动程序在maven框架下,写的main方法需要打包在jdk环境运行 文档主要描述打包的方法
第14章:灵活的构建/14.1 Maven的属性/14.1.2 属性分类/14.1.2.6 环境变量属性 第14章:灵活的构建/14.2 Maven属性的使用/14.2.1 直接在POM文件中使用 第14章:灵活的构建/14.2 Maven属性的使用/14.2.2 使用注解:...
maven的包,配上环境变量就可以用
flume 1.8所有源代码 编译通过版 附 maven3.5.2 安装包 解压配置maven,利用命令行进行编译,导入eclipse,可用于源代码查看,搭建flume远程测试环境