mvn archetype:generate
1 <profiles> 2 <profile> 3 <!-- 本地環境 --> 4 <id>local</id> 5 <properties> 6 <db-url>jdbc:oracle:thin:@localhost:1521:XE</db-url> 7 <db-username>***</db-username> 8 <db-password>***</db-password> 9 </properties> 10 </profile> 11 <profile> 12 <!-- 開發環境 --> 13 <id>dev</id> 14 <properties> 15 <db-url>jdbc:oracle:thin:@172.21.129.51:1521:orcl</db-url> 16 <db-username>***</db-username> 17 <db-password>***</db-password> 18 </properties> 19 <!-- 默認激活本環境 --> 20 <activation> 21 <activeByDefault>true</activeByDefault> 22 </activation> 23 </profile> 24 ... 25 </profiles>
profiles節點中,定義了二種環境:local、dev(默認激活dev環境),可以在各自的環境中添加需要的property值,接下來修改build節點,參考下面的示例:
1 <build> 2 <resources> 3 <resource> 4 <directory>src/main/resources</directory> 5 <filtering>true</filtering> 6 </resource> 7 </resources> 8 <plugins> 9 <plugin> 10 <groupId>org.apache.maven.plugins</groupId> 11 <artifactId>maven-compiler-plugin</artifactId> 12 <version>2.5.1</version> 13 <configuration> 14 <source>1.6</source> 15 <target>1.6</target> 16 <encoding>utf-8</encoding> 17 </configuration> 18 </plugin> 19 </plugins> 20 </build>
resource節點是關鍵,它表明了哪個目錄下的配置文件(不管是xml配置文件,還是properties屬性文件),需要根據profile環境來替換屬性值。
通常配置文件放在resources目錄下,build時該目錄下的文件都自動會copy到class目錄下
例:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="${db-url}" /> <property name="username" value="${db-username}" /> <property name="password" value="${db-password}" /> </bean> </beans>
各屬性節點的值,用占位符"${屬性名}"占位,maven在package時,會根據profile的環境自動替換這些占位符為實際屬性值。
默認情況下:
maven package
將采用默認激活的profile環境來打包,也可以手動指定環境,比如:
maven package -P dev
將自動打包成dev環境的部署包(注:參數P為大寫)