Maven之打包时配置文件替换

在JavaWeb项目中,使用maven打包。在打正式包时,需要手动修改数据库配置为线上环境的地址,这样每次修改起来比较麻烦。搜索了一些资料后,大部分的做法或原理都是预先使用表达式占位符,然后在打包时动态替换。但这种做法无法满足我直接在开发环境(Eclipse+Tomcat)里面直接测试,因为配置文件里面的值是表达式而不是真正的值。所以综合一些资料有个以下解决办法。
  • 正常配置的数据库配置为测试环境的地址
  • maven打包时动态替换配置文件
  • 项目结构图如下具体实现
  • 在开发环境中测试时使用图中测试的数据库配置
  • maven打包时利用ant插件,使用classpath:product/jdbc.properties替换classpath:jdbc.properties,具体做法是在pom.xml中做如下配置

    <profiles>
        <profile>
            <id>prod</id> <!--指定ID-->
            <build>
                <plugins>
                    <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.8</version>
                        <executions>
                            <execution>
                                <phase>compile</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <tasks>
                                        <!-- 替换jdbc.properties-->
                                        <copy file="${basedir}/src/main/resources/product/jdbc.properties" tofile="${basedir}/target/classes/jdbc.properties" overwrite="true"/>
                                        <delete dir="${basedir}/target/classes/product"/>
                                    </tasks>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
  • 打包时指定profile,打包命令为: mvn clean package -P prod

  • 总结这种的做法同样也可以替换其他相关配置,比如log4j相关的配置。

    相关内容推荐