在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
相關的配置。