視頻課程鏈接:http://edu.51cto.com/course/13014.html
Maven項目管理工具,主講:湯小洋
一、Maven簡介
1. 什麼是Maven
Apache Maven是一個軟件項目管理和構建工具,可以幫助我們創建和管理項目
基於項目對象模型POM(Poject Object Model)的概念,幫助開發者構造一個項目的完整生命週期
注:POM是Maven對一個項目的描述,是Maven的核心,一個POM其實就是一個XML文件
2. 爲什麼使用Maven
2.1 項目的管理工具
項目規則很大時一定會將項目進行拆分,將一個項目拆分成多個模塊,每個模塊對應一個工程,多個工程之間存儲依賴關係
此時可以使用Maven的依賴管理機制,幫助我們在項目與項目之間建立依賴關係
2.2 jar包的管理工具
-
通過倉庫管理jar包
多個項目可能會用到相同的jar包,每個項目都要導入jar包,太麻煩
此時可以通過Maven,將jar包放到Maven倉庫中,在項目中引用倉庫中的jar包
-
解決jar包的依賴
jar包之間存儲依賴關係,並且依賴層次很複雜,很難記住
此時可以使用Maven,幫助我們自動解決jar包間的依賴關係
-
自動下載jar包
項目中使用的jar數據很多,自己下載並手動添加jar包
此時可以使用Maven,幫助我們自動下載所有相關的jar包
2.3 自動化的構建工具
構建過程:編譯主代碼——>編譯測試代碼——>執行單元測試——>生成測試報告——>打包——>部署
3. 術語
3.1 中央倉庫
是一個網絡倉庫,存儲jar包和maven插件
http://repo.maven.apache.org/maven2
http://repo1.maven.org/maven2/
3.2 本地倉庫
從中央倉庫下載的jar包的存放位置,也是一個倉庫,只不過是存放在本地電腦上
3.3 鏡像倉庫
對某一倉庫做的鏡像
阿里雲提供的 http://maven.aliyun.com/nexus/content/groups/public/
3.4 私服
局域網內部搭建的maven服務器
4. 單詞
repository 倉庫
archetype 原型、骨架(模板)
artifact 手工製品,成品(項目/jar/war)
二、安裝Maven
1. 下載安裝包
maven 3.2.5版本要求jdk1.6,其後的版本要求jdk1.7
2. 解壓縮
解壓到無中文、無空格,不需要安裝
3. 配置環境變量
3.1 Windows
Maven依賴於JAVA_HOME
echo %JAVA_HOME%
echo $JAVA_HOME
Maven環境變量:
- M2_HOME=Maven安裝目錄
- PATH=原PATH;%M2_HOME%/bin
測試:mvn -version
3.2 Linux/Mac OS
編輯/home/soft01/.bashrc文件,在最後一行添加內容:
cd /home/soft01
vi .bashrc
export M2_HOME=/home/soft01/maven/apache-maven-3.2.5
export PATH=$PATH:$M2_HOME/bin
使修改立即生效:
source .bashrc
測試:mvn -version
成功的界面:
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-15T01:29:23+08:00)
Maven home: /home/soft01/maven/apache-maven-3.2.5
Java version: 1.7.0_80, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-30-generic", arch: "i386", family: "unix"
4. 配置本地倉庫
4.1 本地倉庫的默認位置
~/.m2/repository
4.2 修改本地倉庫的位置
編輯conf/setting.xml
<localRepository>D:\maven\maven-repo</localRepository>
測試:
cd maven/maven-projects
mvn archetype:generate #創建maven項目
提示:
- 選擇創建項目時使用的模板archetype:按回車
- 輸入groupId,一般爲組織域名反向+項目名:com.itany.ums
- 輸入artifactId:test
- 版本:按回車
- 包名:按回車
- 確認:按回車
5. 配置鏡像倉庫
編輯conf/setting.xml
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf> <!-- 所有訪問都使用該鏡像倉庫 -->
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
6. 配置Maven的JDK版本
默認使用maven創建的項目使用的是jdk1.5
修改maven默認使用的jdk版本,編輯conf/setting.xml,在profiles標籤中添加如下內容:
<profile>
<id>jdk‐1.7</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
三、創建Maven項目
1. Java項目的創建
1.1 目錄結構
Java工程約定的目錄結構如下:
|-項目名稱
|-src //程序代碼
|-main //程序主代碼
|-java //源代碼
|-用於存放源代碼,相當於傳統項目的src,如com.itany.usm.dao.UserDao
|-resources //配置文件
|-用於存放配置文件
|-test //測試代碼,目錄結構與main中一樣
|-java
|-resources
|-pom.xml //maven核心配置文件
1.2 基本操作
步驟:
-
創建Java項目
mvn archetype:generate
指定的信息如下:
archetype:(maven-archetype-quickstart) #使用骨架創建java項目 groupId:com.itany.study #指定組織域名反向+項目名 artifactId:sms #指定模塊名稱 version:1.0.1 #版本 package:com.itany.study #包名
-
執行maven操作
cd sms #先切換到項目所在的目錄 mvn compile mvn clean compile test #可以同時執行多個命令
1.3 自定義Java類
2. Web項目的創建
1.1 目錄結構
Web項目的約定目錄結構如下:
|-項目名稱
|-src //程序代碼
|-main //程序主代碼
|-java //源代碼
|-用於存放源代碼,相當於傳統項目的src,如com.itany.usm.dao.UserDao
|-resources //配置文件
|-用於存放配置文件
|-webapp //網站根目錄,相當於傳統web項目的WebRoot
|-WEB-INF
|-web.xml
|-test //測試代碼,目錄結構與main中一樣
|-java
|-resources
|-pom.xml //maven核心配置文件
1.2 基本操作
步驟:
-
創建web項目
mvn archetype:generate
指定的信息如下:
archetype:(maven-archetype-webapp) #使用模板創建web項目 .....
-
執行maven操作
mvn clean compile package
-
發佈
方式1:使用外部的tomcat
將shop.war包複製到webapps目錄下,然後啓動tomcat
cd tomcat.../bin ./startup.sh
方式2:使用maven的tomcat插件
mvn tomcat:run
-
訪問
四、Maven命令
1. 常用命令
命令 | 作用 | 描述 |
---|---|---|
archetype | 創建maven項目 | 根據模板生成項目骨架 |
clean | 清理 | 刪除target目錄 |
compile | 編譯 | 將main中的源代碼編譯成字節碼,放在target/classes目錄下 |
test | 測試 | 執行測試類(使用JUnit),並生成測試報告 |
package | 打包 | 將java項目打包成jar文件,將web項目打包成war文件,放在target目錄下 |
install | 安裝 | 將項目的jar包安裝到本地倉庫中,供其他項目使用 |
deploy | 發佈/安裝 | 將項目的jar包安裝到中央倉庫中,供其他項目使用,需要賬戶和密碼(瞭解) |
site | 生成站點 | 生成關於項目介紹的網頁 |
注意:
- 所有的命令都要跟在mvn的後面,如mvn archetype
- 所有的命令都必須在某個項目的根目錄
- 多個命令可以一起執行
2. 生命週期
一個項目的構建build的過程通常包括:清理、編譯、測試、打包、集成測試、部署等
Maven定義了三套生命週期:clean、default、site
每個生命週期之間是互相獨立,每個生命週期內都包含多個階段,這些階段是有順序的,後續的階段必須等待前面的階段執行後才能執行
default生命週期包含:compile、test、package
五、在IDE中使用Maven
1.IDE工具
-
MyEclipse
集成Maven插件
-
Eclipse
Eclipse For Java EE
-
IDEA
集成Maven插件
2. MyEclipse
2.1 配置maven
Installations
User Settings
2.2 創建maven項目
New——>Maven Project——>archetype
3. Eclipse
4. IDEA
4.1 配置maven
- 指定maven安裝目錄和配置文件
- 自動更新maven項目:勾選Import Maven projects automatically
4.2 創建maven項目
New Module——>Maven——>勾選Create from archetype
4.3 執行maven操作
Maven Projects 顯示所有Maven項目
執行生命週期
自定義Maven操作
4.4 目錄的類型
IDEA中目錄是分類型的,常用的四種:
-
Sources Root 主代碼的目錄 src/main/java
-
Test Source Root 測試代碼的目錄 src/test/java
-
Resources Root 主代碼所需資源的目錄 src/main/resources
-
Test Resources Root 測試代碼所需資源的目錄 src/test/resources
注:在IDEA中默認創建的目錄都是普通的Directory,創建後需要設置目錄的類型