介紹
profile可以配置一系列信息,使用mvn clean compile -Pxx
激活特定的profile和其下配置信息,示例:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<env>prd</env>
</properties>
</profile>
</profiles>
build中使用resources配置指定編譯資源文件路徑
- resources 項目資源文件
- testResources 測試資源文件
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/main/test/resources</directory>
</testResource>
</testResources>
</build>
場景
項目發佈時,本地環境、測試環境和線上環境通常使用的配置都不同,因此可以使用profile實現不同環境配置切換
第一種方式,使用resource配置實現,首先目錄結構如下:
src
|___main
|___config
|___dev
|___conf.properties
|___jdbc.properties
|___prd
|___conf.properties
|___jdbc.properties
|___test
|___conf.properties
|___jdbc.properties
|___resources
|___spring-dao.xml
|___spring-service.xml
|___spring-web.xml
maven配置如下:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/config/${dev}</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<env>prd</env>
</properties>
</profile>
</profiles>
第二種方式,使用filter替換資源Key,目錄如下:
src
|___main
|___config
|___dev
|___filter.properties
|___prd
|___filter.properties
|___test
|___filter.properties
|___resources
|___spring-dao.xml
|___spring-service.xml
|___spring-web.xml
|___conf.properties
|___jdbc.properties
maven配置如下:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>src/main/config/${env}/filter.properties</filter>
</filters>
</build>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<env>prd</env>
</properties>
</profile>
</profiles>
會使用src/main/config/${env}/filter.properties
文件中的key=value
的value替換src/main/resources
目錄下,${key}
引用的地方
除了使用filter指定文件的方式,也可以在profile中配置
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
<jdbc.url>jdbc:mysql://localhost:3306/dbName?useUnicode=true&useSSL=true</jdbc.url>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<env>prd</env>
</properties>
</profile>
</profiles>