缘起

我们在做项目的时候经常会遇到有多个环境每个环境的配置不一样的问题,比如我们的生产环境的数据库和测试环境的数据库肯定不会一样,我们每次在本机测试的时候可能配置的URL是测试环境的,要打生产war包的时候又需要把配置改成生产的,来回很容易出错,那么有没有什么简单的办法呢?有的,首先需要你的项目中有使用maven.

使用maven插件打包不同的配置文件

首先我们需要在pom.xml进行如下配置
定义不同的环境参数

<profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
                <package.environment>dev</package.environment>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>sit</id>
            <properties>
                <package.environment>sit</package.environment>
            </properties>
        </profile>
        <profile>
            <!-- 生产环境 -->
            <id>prd</id>
            <properties>
                <package.environment>prd</package.environment>
            </properties>
        </profile>
    </profiles>

添加一个插件

<sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>src/main/resources/config/${package.environment}</directory>
                            <targetPath>WEB-INF/classes/config</targetPath>
                            <filtering>true</filtering>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
        </plugins>

需要注意的是

 <directory>src/main/resources/config/${package.environment}</directory>
 <targetPath>WEB-INF/classes/config</targetPath>

这一段需要根据你自己的目录结构进行更改,总而言之这一段的目的就是把<directory>里面的路径中的文件copy到targetPath中去

然后我们需要把我们的配置文件目录建成与配置中的对应
maven根据不同的环境打包不同的配置文件_测试环境
然后就可以开始打包了
使用如下命令打包

clean install -P sit

-P后面的参数代表你需要打包哪个环境的配置,你可以指定为sit,也可以指定为dev或者prd.