maven根据profile动态选择配置文件

上线前,有个很繁琐又必须确认的问题,就是环境变量的修改。一般有开发环境、测试环境、线上环境,甚至还有三个以上环境,这样来回修改虽然不难却很容易出错,maven解决这个了这个问题。 这里以log4j的环境配置为例。

  1. 创建 log4j.properties的文件
log4j.rootLogger=DEBUG, R

log4j.appender.R=org.apache.log4j.FileAppender
log4j.appender.R.File=${log.filename}
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

注意这里的``` log4j.appender.R.File property is ${log.filename}.

2. 创建三个环境的配置文件
- 开发环境如下:

log.filename=logs/dev.log

- 测试环境如下

log.filename=logs/test.log

- 生产环境如下:

log.filename=logs/prod.log

3.pom.xml文件
- profile配置

<!-- Profile 配置 -->

<profiles> <!-- 开发环境配置 --> <profile> <id>dev</id> <!-- 这个环境默认是激活的--> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- 指定必须与名称相同的路径 --> <build.profile.id>dev</build.profile.id> </properties> </profile>

<!-- 生产环境配置 -->

<profile>
    <id>prod</id>
    <properties>
        <!--  指定必须与名称相同的路径  -->
        <build.profile.id>prod</build.profile.id>
    </properties>
</profile>

<!-- 测试环境配置-->
<profile>
    <id>test</id>
    <properties>
        <!--  指定必须与名称相同的路径   -->
        <build.profile.id>test</build.profile.id>
    </properties>
</profile>

</profiles> ``` - 配置文件从Maven配置文件的配置目录读取 ``` <filters> <!--配置文件是从Maven配置文件的配置目录 --> <filter>profiles/${build.profile.id}/config.properties</filter> </filters> ``` - 配置文件目录 ``` <resources> <!--从配置的资源目录中找到的占位符被从配置文件特定的配置文件中找到的属性值替换 --> <resource> <filtering>true</filtering> <directory>src/main/resources</directory> </resource> </resources> ```

猜你喜欢

转载自my.oschina.net/u/3529861/blog/1811779