1.前言
一个稍微大一点的软件公司,他们开发项目时一般都会有多套环境,如:开发dev,预发pre,线上publish,公共daily…在这里Maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev dev我们可以自己定义。
为什么要多套环境?
我们项目开发时用开发的环境,测试通过后,我们推到预发环境上,测试通过后我们就可以推到线上去。但是这几种环境的服务器:如mysql,redis..肯定会有所不同,所以我们如果换一种环境后就又去该项目配置,这很不良好。所以用maven,打包时指定不同环境,这样就轻易解决了。
2.具体怎么实现
1) 在pom.xml文件中添加如下:
<build>
<finalName>cxx</finalName>
<filters>
<filter>src/main/filter/${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
</build>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>daily</id>
<properties>
<env>daily</env>
</properties>
</profile>
<profile>
<id>pre</id>
<properties>
<env>pre</env>
</properties>
</profile>
<profile>
<id>publish</id>
<properties>
<env>publish</env>
</properties>
</profile>
</profiles>
2) 设置多环境下的配置
daily.properties
disconf.server=disconf.cxx-daily.com
disconf.version=1.0.0
disconf.app=boss-api
disconf.dev=daily
disconf.debug=true
其他几个我就不贴出来,比如改一下服务器地址…
3) 在resources下创建我们要的配置文件,我建了一个disconf.properties
disconf.enable.remote.conf=true
disconf.server=${disconf.server}
disconf.version=${disconf.version}
disconf.app=${disconf.app}
disconf.dev=${disconf.dev}
disconf.debug=${disconf.debug}
我们接下来要实现的就是,怎么根据环境的不同,把disconf.properties变量的值替换成不同环境的。
4) Maven上场了,看我怎么操作吧。
然后我们开发时到哪个环境下,就把那个环境下项目打的包扔到相应的服务器上,这样就好了!!!