首先是profile配置,在pom.xml中添加以下profile的配置:spring
<profiles> <profile> <!-- 本地開發環境 --> <id>development</id> <properties> <profiles.active>development</profiles.active> <deploy.url>http://host:port/manager/text</deploy.url> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <!-- 測試環境 --> <id>test</id> <properties> <profiles.active>test</profiles.active> <deploy.url>http://host:port/manager/text</deploy.url> </properties> </profile> <profile> <!-- 生產環境 --> <id>production</id> <properties> <profiles.active>production</profiles.active> <deploy.url>http://host:port/manager/text</deploy.url> </properties> </profile> </profiles>
這裏定義了三個環境,分別是development(開發環境)、test(測試環境)、production(生產環境),其中開發環境是默認激活的(activeByDefault爲true),這樣若是在不指定profile時默認是開發環境。tomcat
同時每一個profile還定義了兩個屬性,其中profiles.active表示被激活的profile的名稱,deploy.url表示發佈服務器的地址。咱們須要在下面使用到這兩個屬性。服務器
另外host和port分別是發佈服務器的主機地址和端口號app
針對不一樣的環境,咱們定義不一樣的配置文件,而這些配置文件都作爲資源文件放到maven工程的resources目錄下,即src/main/resources目錄下,且各個環境的配置分別放到相應的目錄下,而全部環境都公用的配置,直接放到src/main/resources目錄下便可。以下圖所示:
eclipse
如圖所示,開發環境、測試環境、生產環境的配置文件分別放到src/main/resources目錄下的development、test、production三個子目錄中,而全部環境都公用的配置文件spring-applicationContext.xml直接放到src/main/resources目錄下。其中jdbc.properties配置數據源、logback.xml配置日誌。maven
在pom中的build節點下,配置資源文件的位置,以下所示:測試
<build> <resources> <resource> <directory>src/main/resources</directory> <!-- 資源根目錄排除各環境的配置,使用單獨的資源目錄來指定 --> <excludes> <exclude>test/*</exclude> <exclude>production/*</exclude> <exclude>development/*</exclude> </excludes> </resource> <resource> <directory>src/main/resources/${profiles.active}</directory> </resource> </resources> </build>
首先第一個資源文件位置src/main/resources須要排隊提各個環境的配置文件,各個環境的配置咱們在第二個<resource>節點中經過前面在profile中配置的profiles.active屬性來指定。ui
即src/main/resources/${profiles.active}。這樣在激活指定的profile時,會加載指定目錄下的配置文件,如當前激活的是production profile,那麼這個資源目錄就是src/main/resources/production。url
這樣就達到了不一樣環境加載不一樣配置的目的。spa
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.2-SNAPSHOT</version> <configuration> <url>${deploy.url}</url> <server>tomcat</server> <path>/appcontext</path> </configuration> </plugin>
其中發佈的<url>節點就是在前面profile中配置的deploy.url屬性,這樣不一樣的環境就指定了不一樣的發佈地址。
<server>和<path>節點分別是發佈服務器的用戶配置的id以及應用的context名稱。
全部須要的配置就完成了,下面是見證奇蹟的時候了。經過在運行maven命令時指定不一樣的profile便可構建不一樣環境須要的war包或發佈到不一樣的環境了 。如:
mvn clean package -Pproduction即構建出生產環境須要的war包
mvn tomcat:redeploy -Ptest 即發佈到測試環境
因爲默認的profile是development,因此若是咱們不指定profile,那麼加載就是開發環境deployment下的配置文件了。即咱們在本地開發測試時,不用關心profile的問題。
並且本地開發時在eclipse中使用tomcat插件來進行熱部署時也不須要額外的配置。真正的作到了根據不一樣環境來自動切換,便可移植的構建。
另外,在進行持續集成時,使用Jenkins集成maven一樣是很是很是方便的。