发布时间:2018-05-16作者:laosun阅读(2177)
在实际开发项目中,常常有几种环境,一般情况下最少有三种环境:开发、测试、正式。各个环境之间的参数各不相同,比如数据库,这三者使用的数据都不一样,所以上线之前来回修改参数1不安全,2太麻烦。而maven提供这种打包方式:比如mvn clean -P名字 package
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过profile定义在jdk1.5以上使用一套配置信息,在jdk1.5以下使用另外一套配置信息;或者有时候我们可以通过操作系统的不同来使用不同的配置信息,比如windows下是一套信息,linux下又是另外一套信息;再或者开发者一套环境,线上一套环境等等。
来看如何设置吧,这里我演示两套环境,开发一套、线上一套:
在pom.xml 文件中 project 节点下增加:
<build> <!-- ROOT --> <finalName>sys_sunjs</finalName> <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory> <filters> <!-- maven profile 动态加载配置信息 --> <filter>${project.basedir}/src/main/resources/filters/filters-${active.profile}.properties</filter> </filters> <resources> <resource> <directory>${project.basedir}/src/main/resources</directory> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.pfx</include> <include>**/*.cer</include> <include>**/*.png</include> </includes> <filtering>false</filtering> </resource> </resources> </build> <profiles> <profile> <!-- (开发小组内自测的)开发环境(dev) --> <id>dev</id> <properties> <active.profile>dev</active.profile> </properties> <activation> <activeByDefault>true</activeByDefault><!--默认启用的是local环境配置 --> </activation> </profile> <profile> <!-- 正式生产环境(prod) --> <id>prod</id> <properties> <active.profile>prod</active.profile> </properties> </profile> </profiles>
然后在resources目录下创建filters目录。
在其下边创建两个文件:
filters-dev.properties
filters-prod.properties
从文件名应该就可以看出dev是开发环境,prod是线上环境。
然后在两个文件中分别配置下边的设置。当然最好不一样,因为是两套环境。
db.url=jdbc:mysql://127.0.0.1:3306/xxxxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true db.user=root db.pass=root
然后在resources目录下创建个config.properties,来承载这些参数,比如:
db.url=${db.url} db.user=${db.user} db.pass=${db.pass}
好了,到此配置完成,如果是eclipse如何手动的切换环境配置呢:
对着项目名称点击右键-->Maven-->Maven profile Selection
请忽略我上边的jdk-1.8,我那是在maven的配置文件中增加的,因为创建maven项目后,默认使用jdk1.5。我发过类似这种解决方案的,可以自己搜索一下。
从上图中我们可以看到dev是默认加载的,我们可以选择prod,然后点击OK,那么config.properties就会加载成filters-prod.properties中的配置。
打包的时候使用:mvn clean -Pprod package 结果是同样的道理。
版权属于: 技术客
原文地址: https://www.sunjs.com/article/detail/b25b1aebf74449959edf1ad700571d7a.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
关键字: maven