Java的專案構建工具Maven的使用教程
一、Maven是什麼
Maven是一個用java開發的專案構建工具, 它能使專案構建過程中的編譯、測試、釋出、文件自動化, 大大減輕了程式設計師部署負擔。
二、安裝Maven
安裝maven非常簡單,訪問Maven官方頁下載即可:
下載完後配置M2_HOME環境變數, 然後終端執行mvn --version, 看到正確的輸出提示,Maven就安裝完成了。
三、Maven基本概念
Maven的核心思想是POM, 即Project Object Model(專案物件模型)。POM檔案是以XML檔案的形式描述一個Maven專案所用到的資源(原始碼、依賴、測試等)。下圖描述了POM檔案的結構, 以及Maven是如何呼叫POM檔案的。
當執行一條Maven命令時, 會傳入一個pom檔案, Maven會在該pom裡面的描述的資源上執行
POM檔案:
4.0.0....................................................................................
modelVersion是POM模型版本, 4.0.0支援Maven2和3
Maven Coordinates(Maven座標)
(1)groupId: 它是一個組織或者專案的唯一ID, 大多數情況下會使用專案的java包的根名作為groupID, 例如qing
(2)artifactId:它是正在構建的專案名稱, 例如一個支付系統artifactId是web-pay。artifactId 是Maven倉庫中groupId目錄下的子目錄名
(3)version:顧名思義專案發行的版本號
以上三項都是構建結果名稱的一部分, 在專案構建後會生成一個jar包,位於Maven倉庫的路徑就是MAVEN_REPO/com/pastqing/web-pay/1.0/
四、一個用Maven構建的Hello World java專案
利用Maven外掛archetype構建一個專案:
在終端中開啟工作目錄
執行命令:
mvn archetype:generate
, 第一次執行時比較慢,原因是第一次需要從Maven中央倉庫中下載相關專案原型。下載完畢後,會選擇專案模型,以及輸入groupId, artifactId,version等,構建完畢後會有成功提示。
打包專案:切換到專案根目錄,執行mvn package。打包成功之後,專案會生成一個target資料夾,裡面有生成好的jar檔案和class檔案。
執行jar檔案:
java -cp target/
至此一個最簡單Maven構建的java專案就完成了。
五、一個用Maven構建的java-web專案
生成一個web專案與生成java專案基本類似,只是用的模型不同而已。這裡不再闡述。下面我們具體說說如何使用Tomcat或者jetty外掛執行web專案。這裡我們以tomcat舉例。
Maven Tomcat外掛安裝:
我們將如下外掛資訊加入到web專案中的'POM檔案中
ntomcat7-maven-plugin2.2
這樣我們集成了這個tomcat的Maven外掛, 只需要一個命令就可以部署、啟動服務了。命令如下:
mvn tomcat:run
(tomcat6)
mvn tomcat7:run
(tomcat7)
使用tomcat Maven外掛自動部署到外部tomcat
以上自動部署,會使用Maven內嵌的Tomcat, 下面我們修改POM檔案, 讓專案部署到外部的Tomcat中。
修改專案POM檔案,新增伺服器配置資訊
ntomcat7-maven-plugin2.2http://localhost:8080/manager/texttomcat7adminadmin
其中server, username, password的值與%Maven_HOME中的中的server, username, password一一對應。
啟動外部tomcat, 執行命令mvn tomcat7:redeploy
六、如何用Maven構建多模組專案
1.父POM
所有的Maven pom檔案都繼承自一個父POM, 如果沒有指定父pom, 則該pom檔案繼承自根POM。pom檔案的整合關係如下圖所示:
可以讓一個pom檔案顯式地繼承另一個pom檔案。這樣,可以通過修改公共父pom檔案的設定來修改所有子pom檔案的設定。這裡我們使用parent標籤來定義父pom。下面我們具體搭建一個多模組Mavne專案
2.構建專案目錄結構
我們建立一個maven-web專案, 名字叫EducationCloud, 接下來我們在專案目錄下建立幾個資料夾用來劃分我們的模組。它們分別是Education-parent(父模組), Education-core(業務), Education-entity(實體), Education-web(web服務)
目錄的劃分可以根據需要進行, 我的劃分如上
3.修改pom檔案
我們用module標籤來進行劃分模組。開啟根目錄下的pom檔案, 新增moudle標籤。
<"1.0" encoding="UTF-8">ationCloudEducationCloud1.0-SNAPSHOTpomEducation-parentEducation-coreEducation-entityEducation-webEducationCloud
這裡我們說下packaging標籤:最常見的就是打包為jar, war了。任何一個Maven專案都需要定義pom檔案中的packaging元素, 如果不宣告該元素, 則預設打包為jar, 如果定義值為war那麼就打包為war包。如果值為pom,那麼什麼包都不生成(通常用於父模組)。
給各個模組新增parent標籤:
parent標籤用來定義父POM的座標位置的, 定義如下:
ationCloudEducationCloud-parent1.0-SNAPSHOT
groupId, aritfactId, version是常規表示父pom位置資訊的元素, relativePath是表示父pom位置的相對路徑, 預設為../, 這裡需要注意的是groupId, aritfactId, version必須與父pom檔案中的對應起來
使用dependencyManagement管理專案所有依賴
為了統一管理依賴,我們在父專案模組的pom檔案中使用dependencyManagement來宣告專案的所有依賴, 這樣在其他的子專案中引用依賴時就可以省略版本號的編寫, 修改起來也很容易。
編寫**父專案模組**educationCloud-parent的pom檔案, 新增如下:
使用pluginManagement管理專案中的Maven外掛
為了統一管理專案中的Maven外掛, 如Maven編譯外掛, 打包外掛等及其配置資訊, 在父專案 pom檔案中新增pluginManagement來管理, 這樣在所有子模組中引用的外掛都會統一處理, 新增如下:
UTF-8
上面我們添加了maven編譯外掛的配置,用jdk1.7編譯, 儲存後我們可以在各個子模組的Effective pom中看到相應的修改。
使用properties標籤定義常量:
我們將各個依賴的版本號定義為不同的常量,這樣方便以後的修改:
UTF-8
引用時用${jdkVersion}的形式引用即可。
注,以上操作均可在IDE中操作, 更加方便簡單。
-
Java程式語言初學者入門課程
初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯絡,分別有哪些應用。希望對您有所幫助!更多內容請關注應屆畢業生考試網!一、先明白瞭解什麼是Java的四個方面。初學者先弄清這些Java的基本概念也是必不可少的...
-
21個java基本知識點
本文主要是一些java基礎知識點相關的,所以也希望能分享給剛剛入門的Java程式設計師和打算入Java開發這個行當的準新手們,希望可以給大家一些經驗,能讓大家更好學習和使用Java。1.JVM相關(包括了各個版本的特性)對於剛剛接觸Java的人來說,JVM相關的知識不一定需要理解很...
-
2017年計算機java提分練習題
學習必須如蜜蜂一樣,採過許多花,這才能釀出蜜來。以下是小編為大家搜尋整理的2017年計算機java提分練習題,希望對大家有所幫助!更多精彩內容請及時關注我們應屆畢業生考試網!1).下列關於for迴圈和while迴圈的說法中哪個是正確的?e迴圈能實現的操作,for迴圈都能實現...
-
關於java如何配置MyEclipse Maven環境具體方法
雖然我的大部分專案已經遷到Idea上去了,但是在寫部分小的測試程式的時候還是習慣性的會點開MyEclipse。之前使用第三方庫的時候我會習慣的下載jar包,然後buildpath匯入,但是在idea中貌似通過配置maven依賴更方便,於是我在MyEclipse中也想使用來匯入依賴,在嘗試的過...