前言
互联网后端服务通常会部署多个环境:开发环境、测试环境、预发布环境和生产环境。不同的环境通常有各自的环境配置,例如mysql服务器的地址、用户名密码,zookeeper的ip和端口等等。为了使打出的jar包能获取不同环境的配置,业界最常用的做法是使用maven的profile来区分不同环境。
代码示例
1. 在resources文件夹中为每个环境创建一个文件夹
└--resources
└--dev
└--test
└--online
2. 修改pom.xml,增加如下内容
<profiles>
<profile>
<id>dev</id>
<properties>
<env>src/main/resources/dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>src/main/resources/test</env>
</properties>
</profile>
<profile>
<id>online</id>
<properties>
<env>src/main/resources/online</env>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>dev/**</exclude>
<exclude>test/**</exclude>
<exclude>online/**</exclude>
</excludes>
</resource>
<resource>
<directory>${env}</directory>
</resource>
</resources>
</build>
3. 打包时增加-P参数指定profile
mvn clean package -Pdev
mvn clean package -Ptest
mvn clean package -Ponline
指定的profile对应的文夹中的配置文件将被放入jar包中。在启动JVM之后这些文件会在classpath下,可以被应用程序访问。