Maven(五)繼承、聚合、自動化部署

繼承

1. 問題

因爲test範圍的依賴不能傳遞,所以必然會分散在各個模塊工程中,很容易造成版本不一致。
比如,我們每個工程都用了Junit組件,這個組件的依賴範圍就是test。

所以我們需要統一管理各個模塊工程中對junit依賴的版本。

2. 解決思路

將junit依賴統-提取到"父”工程中,在子工程中聲明junit依賴時不指定版本,以父工程中統一設定的爲準。同時也便於修改。

3. 操作步驟

  1. 創建一個maven工程作爲父工程。注意,打包方式爲pom
    創建父工程:
    在這裏插入圖片描述

  2. 在子工程中聲明對父工程的引用

    <!-- 子工程中聲明父工程 -->
    <parent>
    	<groupId>com.veeja.maven</groupId>
    	<artifactId>Parent</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	
    	<!-- 以當前文件爲基準的父工程的pom.xml文件的相對路徑 -->
    	<relativePath>../Parent/pom.xml</relativePath>
    </parent>
    
  3. 將子工程的座標中與父工程座標中重複的內容刪除
    在這裏插入圖片描述
    我們可以看到在子工程中設置了相應的座標之後,有些重複的內容就報警告了,我們刪除掉這些內容就行了。

  4. 在父工程中統一Junit的依賴

    <!--配置依賴的管理 -->
    <dependencyManagement>
    	<dependencies>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.0</version>
    			<scope>test</scope>
    		</dependency>
    	</dependencies>
    </dependencyManagement>
    
  5. 在子工程中刪除Junit依賴的版本號
    我們在配置完上一步後,就會發現,在子工程中的Junit依賴配置也會報警告:
    在這裏插入圖片描述
    我們也把這一行刪掉就可以了。
    形成:

    <dependencies>
    	<dependency>
    		<groupId>junit</groupId>
    		<artifactId>junit</artifactId>
    		<scope>test</scope>
    	</dependency>
    </dependencies>
    

這樣我們就完成了對依賴版本的統一,我們修改父工程的依賴版本,相應的字版本的依賴信息也會改變。


聚合

1. 爲什麼要使用聚合?

將多個工程拆分爲模塊後,需要手動逐個安裝到倉庫後依賴才能夠生效。
修改源碼後也需要逐個手動進行clean操作。而使用了聚合之後就可以批量進行 Maven 工程的安裝、清理工作。

2. 配置方法

我們可以在一個總的聚合工程中配置各個參與聚合的模塊。
例如,在Parent中,配置我們之前寫的三個工程:

<!-- 配置聚合 -->
<modules>
	<module>../HelloMaven</module>
	<module>../HelloFriend</module>
	<module>../MakeFriends</module>
</modules>

使用方式:在聚合工程的pom.xml上右鍵進行相應的run asmaven … 就可以了。


自動化部署

我們在完成一個maven的web項目後是需要部署到web容器(Tomcat)的。我們可以手動的執行package命令,然後發到服務器,也可以在eclipse中直接運行,但是實際上,我們可以進行配置,讓它自動化的去部署一個項目。

配置如下,以及詳細的解釋我都放在註釋裏面:

<!-- 配置當前工程構建過程中的特殊設置 -->
<build>
	<!-- 工程最終的名字 -->
	<finalName>webDemo</finalName>
	
	<!-- 配置構建過程中需要使用的插件 -->
	<plugins>
		<plugin>
			<!-- cargo是一個專門從事開發“啓動Servlet容器”的組織 -->
			<groupId>org.codehaus.cargo</groupId>
			<artifactId>cargo-maven2-plugin</artifactId>
			<version>1.2.3</version>
			
			<!-- 針對這個插件進行的配置 -->
			<configuration>
				<!-- 配置當前系統中容器的位置 -->
				<container>
					<containerId>tomcat7x</containerId>
					<home>E:\Tomcat7\apache-tomcat-7.0.94</home>
				</container>
				<configuration>
					<type>existing</type>
					<home>E:\Tomcat7\apache-tomcat-7.0.94</home>
					<!-- 如果Tomcat端口爲默認值8080則不必設置該屬性 -->
					<!-- 
						<properties>
							<cargo.servlet.port>8989</cargo.servlet.port>
						</properties> 
					-->
				</configuration>
			</configuration>
			
			<!-- 配置插件在什麼情況下執行 -->
			<executions>
				<execution>
					<id>cargo-run</id>
					<!-- 生命週期的階段 -->
					<phase>install</phase>
					<!-- 插件的目標 -->
					<goals>
						<goal>run</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

我們在命令行進入對應的目錄,並且輸入mvn deploy命令就可以一鍵部署了。
在這裏插入圖片描述


附:如何查找依賴信息?

我們給出了一些依賴信息,但是有很多是我們不知道的,我們想用的話,可以去
http://mvnrepository.com
搜索相關的依賴信息。
在這裏插入圖片描述


END.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章