1. 程式人生 > >maven多環境配置總結

maven多環境配置總結

開發十年,就只剩下這套架構體系了! >>>   

阿里中央倉庫

由於預設的中央倉庫,伺服器在國外,下載速度很慢,但我們可以使用阿里的中央倉庫,親測速度超快。我們只需在maven根目錄下的conf資料夾中的setting.xml檔案的mirrors節點,新增內容如下:

<mirror>
 <id>alimaven</id>
 <name>aliyun maven</name>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 <mirrorOf>central</mirrorOf> 
 </mirror>

maven多環境

maven藉助profile實現多環境,通過不同的環境啟用不同的profile來達到構建的可移植性。筆者有兩個環境dev、test,專案目錄結構:

maven多環境配置總結

 

如上圖,在專案根路徑新建目錄filters/dev、filters/test,並在dev、test分別新建檔案config.properties檔案;

1、配置config.properties檔案

dev下的config.properties:

env=dev

test下的config.properties:

env=test

在src/resources/config新建檔案config.properties,內容為:

env=${env}

${}中的名稱必須是env不能是env1或者其它。

2、配置resources

<resource>
	<directory>src/main/resources</directory>
	<filtering>true</filtering>
	<includes>
			<include>**/*.xml</include>
			<include>**/*.properties</include>
	</includes>
</resource>

通過指定filtering表示includes節點配置的檔案都將通過maven的過濾進行變數值的替換。

3、配置filter

<profiles>
		<profile>
			<id>dev</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<build>
				<filters>
					<filter>${basedir}/filters/dev/config.properties</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>test</id>
			<build>
				<filters>
					<filter>${basedir}/filters/dev/config.properties</filter>
				</filters>
			</build>
		</profile>
	</profiles>

通過filter,我們可以將不同環境目錄下的config.properties檔案中的引數值載入到maven中,如果filters中可以新增有多個filter,即可以新增多個properties檔案。

4、通過命令進行打包

mvn clean compile -Pdev

通過-P指定打包環境,如果不指定則打包的環境預設是dev

5、擴充套件

除了filters定義多環境,我們還可以通過節點properties定義不同環境的變數,我們使用如下方法可以定義env:

<profiles>
		<profile>
			<id>dev</id>
			<properties>
			 <env>dev</env>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<id>test</id>
			<properties>
			 <env>test</env>
			</properties>
		</profile>
	</profiles>

但filters與properties也可以一起使用,定義不同的變數。

 

轉自:https://www.toutiao.com/a667