在实际项目开发中,基本都是需要多种环境,例如:本地调试,内网测试,外网测试,生产环境(正式)。而各个环境之间的数据库连接信息或者各种配置信息,都不可能是全部都一样的,此时就需要切换,但是手动切换的话,有时候会出现遗漏和出错,而且也是非常麻烦的事情,需要去找到一个个配置信息,进行注释或者修改。
这里我们利用maven的profile功能切换环境,可以完美的避免这种情况,并且使项目的配置信息都整合起来,非常容易管理。
使用工具:IntelliJ IDEA
在pom.xml定义环境的profiles:
<profiles>
<profile>
<id>本地调试</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<mongodb.admin.host>192.168.1.121</mongodb.admin.host>
<mongodb.admin.port>27017</mongodb.admin.port>
<mongodb.admin.credentials> </mongodb.admin.credentials>
<mongodb.server.host>192.168.1.121</mongodb.server.host>
<mongodb.server.port>27017</mongodb.server.port>
<mongodb.server.credentials> </mongodb.server.credentials>
<mysql.admin.host>192.168.1.222</mysql.admin.host>
<mysql.admin.port>3306</mysql.admin.port>
<mysql.admin.user>root</mysql.admin.user>
<mysql.admin.password>123456</mysql.admin.password>
<redis.host>192.168.1.251</redis.host>
<redis.port>6379</redis.port>
<redis.password>123</redis.password>
<address.chat>http://192.168.1.121:1088/</address.chat>
<address.server>http://192.168.1.121:10200/bgo/</address.server>
<address.api>http://192.168.1.222:8080/sondoon-api/</address.api>
<address.official>http://192.168.1.222:8080/sondoon-web/</address.official>
<address.img>http://192.168.1.222:8080/</address.img>
<address.um>http://192.168.1.222:8080/sondoon-um/</address.um>
<address.um.sociaty>http://192.168.1.222:8080/sondoon-um/sociaty</address.um.sociaty>
<sms.model>1</sms.model>
<sms.account>N54xxxx</sms.account>
<sms.password>isDmwxxxxx</sms.password>
<sms.url>http://smssh1.253.com/msg/send/json</sms.url>
<push.model>true</push.model>
<project.model>1</project.model>
</properties>
</profile>
<profile>
<id>内网测试</id>
<properties>
<address.project>192.168.1.251</address.project>
<mongodb.admin.host>${address.project}</mongodb.admin.host>
<mongodb.admin.port>27017</mongodb.admin.port>
<mongodb.admin.credentials> </mongodb.admin.credentials>
<mongodb.server.host>${address.project}</mongodb.server.host>
<mongodb.server.port>27017</mongodb.server.port>
<mongodb.server.credentials> </mongodb.server.credentials>
<mysql.admin.host>${address.project}</mysql.admin.host>
<mysql.admin.port>3306</mysql.admin.port>
<mysql.admin.user>web</mysql.admin.user>
<mysql.admin.password>123456</mysql.admin.password>
<redis.host>${address.project}</redis.host>
<redis.port>6379</redis.port>
<redis.password>123</redis.password>
<address.chat>http://${address.project}:1088/</address.chat>
<address.server>http://${address.project}:10200/bgo/</address.server>
<address.api>http://${address.project}/sondoon-api/</address.api>
<address.official>http://${address.project}/sondoon-web/</address.official>
<address.img>http://${address.project}/</address.img>
<address.um>http://${address.project}/sondoon-um/</address.um>
<address.um.sociaty>http://${address.project}/sondoon-um/sociaty</address.um.sociaty>
<sms.model>1</sms.model>
<sms.account>N54xxxxxx</sms.account>
<sms.password>isDmwxxxxxx</sms.password>
<sms.url>http://smssh1.253.com/msg/send/json</sms.url>
<push.model>false</push.model>
<project.model>1</project.model>
</properties>
</profile>
<profile>
<id>外网测试</id>
<properties>
<address.project>10.135.70.xxx</address.project>
<mongodb.admin.host>127.0.0.1</mongodb.admin.host>
<mongodb.admin.port>28017</mongodb.admin.port>
<mongodb.admin.database>@admin</mongodb.admin.database>
<mongodb.admin.credentials> </mongodb.admin.credentials>
<mongodb.server.host>127.0.0.1</mongodb.server.host>
<mongodb.server.port>28017</mongodb.server.port>
<mongodb.server.database>@admin</mongodb.server.database>
<mongodb.server.credentials> </mongodb.server.credentials>
<mysql.admin.host>${address.project}</mysql.admin.host>
<mysql.admin.port>3306</mysql.admin.port>
<mysql.admin.user>erlang</mysql.admin.user>
<mysql.admin.password>1</mysql.admin.password>
<redis.host>${address.project}</redis.host>
<redis.port>6379</redis.port>
<redis.password>123</redis.password>
<address.chat>http://${address.project}:1088/</address.chat>
<address.server>http://${address.project}:10200/bgo/</address.server>
<address.api>http://${address.project}/sondoon-api/</address.api>
<address.official>http://139.199.4.xx/sondoon-web/</address.official>
<address.img>http://139.199.4.xx/</address.img>
<address.um>http://${address.project}/sondoon-um/</address.um>
<address.um.sociaty>http://${address.project}/sondoon-um/sociaty</address.um.sociaty>
<sms.model>1</sms.model>
<sms.account>N54xxxxxx</sms.account>
<sms.password>isDmwxxxxxx</sms.password>
<sms.url>http://smssh1.253.com/msg/send/json</sms.url>
<push.model>false</push.model>
<project.model>1</project.model>
</properties>
</profile>
<profile>
<id>正式环境</id>
<properties>
<address.project>web.xxxxxx.com.prime</address.project>
<mongodb.admin.host>mongo_erlang.xxxxxx.com.prime</mongodb.admin.host>
<mongodb.admin.port>27017</mongodb.admin.port>
<mongodb.admin.database>@admin</mongodb.admin.database>
<mongodb.admin.credentials>erlang:erlang8!1${mongodb.server.database}</mongodb.admin.credentials>
<mongodb.server.host>mongo_erlang.xxxxxx.com.prime</mongodb.server.host>
<mongodb.server.port>27017</mongodb.server.port>
<mongodb.server.database>@admin</mongodb.server.database>
<mongodb.server.credentials>erlang:erlang8!1${mongodb.server.database}</mongodb.server.credentials>
<mysql.admin.host>mysql_web.xxxxxx.com.prime</mysql.admin.host>
<mysql.admin.port>3306</mysql.admin.port>
<mysql.admin.user>webuser</mysql.admin.user>
<mysql.admin.password>Pisdf290L</mysql.admin.password>
<redis.host>redis_web.xxxxxx.com.prime</redis.host>
<redis.port>6379</redis.port>
<redis.password>redisxxxxxx2</redis.password>
<address.chat>http://chat.xxxxxx.com:1088/</address.chat>
<address.server>http://bg.xxxxxx.com.prime:10200/bgo/</address.server>
<address.api>http://${address.project}:8080/sondoon-api/</address.api>
<address.official>http://web.xxxxxx.com:8080/sondoon-web/</address.official>
<address.img>http://web.xxxxxx.com:8080/</address.img>
<address.um>http://${address.project}:8080/sondoon-um/</address.um>
<address.um.sociaty>http://${address.project}:8080/sondoon-um/sociaty</address.um.sociaty>
<sms.model>1</sms.model>
<sms.account>N54xxxxxx</sms.account>
<sms.password>isDmwxxxxxx</sms.password>
<sms.url>http://smssh1.253.com/msg/send/json</sms.url>
<push.model>true</push.model>
<project.model>1</project.model>
</properties>
</profile>
</profiles>
当你配置好这些信息的时候,打开右边的Maven Projects栏目,如果不知道怎么打开,可以左上角View——>Tool Windows——>Maven Projects。
打开Maven Projects栏目后,可以看到Profiles配置,展开后可以看见我们刚才配置的几个环境信息:
到这一步之后,只要勾选了哪个配置,当你编译打包的时候,maven就会为你使用你所勾选的那一套配置信息。当你没有勾选的时候,这里会有一个默认配置:
<activation>
<activeByDefault>true</activeByDefault>
</activation>
比如在本地调试配置加上默认选择这一套配置信息,即你不勾选任何配置的时候,会默认使用本地调试这一套配置信息:
我们配置好这个pom.xml后,哪里需要使用可直接调用里面的配置信息即可,例如,properties文件调用配置信息:
到这里,基本配置工作已经做完,其他地方若有需要用到配置信息的,直接使用properties文件的配置即可。
如若需要发布代码到其他环境,只需要轻轻松松勾选所需要的环境配置信息即可编译打包上传发布,极大的避免了因为环境不同需要修改配置信息的工作量,也方便管理配置信息。