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中操作, 更加方便簡單。
-
2017上半年計算機二級Java練習題及答案
計算機等級證書是我們找工作的敲門磚,現在越來越多人重視計算機等級考試。下面是本站小編為大家帶來的2017上半年計算機二級Java練習題及答案,希望對大家的學習有幫助!一、單選題1、結構化程序設計主要強調的是______。A、程序的規模B、程序的易讀性C、程序的執...
-
java的String=a; a==null和a.equals(null)這兩個判斷有什麼區別
1、String的==與equal()在對字符串的相等判斷,==判斷的是地址是否相同,equal()判斷的是字符值是否相同。大多數時候==跟equal()的結果都是相同的。這是因為String對象是不變模式的,如果你不是明確地new一個String對象,Java對於String對象的保存默認的是會把新生成...
-
Java基本元素詳解
生活呆以是甜的,也可以是苦的,但不能是沒味的。你可以勝利,也可以失敗,但你不能屈服,以下是小編為大家搜索整理了Java基本元素詳解,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!第二章基本元素第一章總結:一平台&JDK&JRE&JVM&A...
-
linux下執行java程序的sh腳本教程
文章主要介紹了linux下執行java程序的sh腳本,僅供參考,但是設置的時候環境變量是最重要的,我就是環境變量一直不對,總是按網上查到的來,不明白怎麼回事,才一直出錯,其實環境變量就是你要執行的java程序所在的位置。接下來是小編為大家收集的linux下執行java程序的sh腳...