繼承
1. 問題
因爲test範圍的依賴不能傳遞,所以必然會分散在各個模塊工程中,很容易造成版本不一致。
比如,我們每個工程都用了Junit組件,這個組件的依賴範圍就是test。
所以我們需要統一管理各個模塊工程中對junit依賴的版本。
2. 解決思路
將junit依賴統-提取到"父”工程中,在子工程中聲明junit依賴時不指定版本,以父工程中統一設定的爲準。同時也便於修改。
3. 操作步驟
-
創建一個maven工程作爲父工程。注意,打包方式爲pom
創建父工程:
-
在子工程中聲明對父工程的引用
<!-- 子工程中聲明父工程 --> <parent> <groupId>com.veeja.maven</groupId> <artifactId>Parent</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 以當前文件爲基準的父工程的pom.xml文件的相對路徑 --> <relativePath>../Parent/pom.xml</relativePath> </parent>
-
將子工程的座標中與父工程座標中重複的內容刪除
我們可以看到在子工程中設置了相應的座標之後,有些重複的內容就報警告了,我們刪除掉這些內容就行了。 -
在父工程中統一Junit的依賴
<!--配置依賴的管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement>
-
在子工程中刪除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 as→ maven … 就可以了。
自動化部署
我們在完成一個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.