Maven是一個跨平臺的項目管理工具,主要用於基於java平臺的項目構建,依賴管理。html
如圖爲項目構建的過程。java
解決的項目的問題:web
一、 若是有好幾個項目,這好幾個項目中,須要用到不少相同的jar包,spring
能不能只創建一個倉庫來解決這個問題?apache
2、測試方法能不能所有運行呢?eclipse
3、怎麼樣把一個模塊的功能放入到倉庫中maven
2 Maven 的安裝與配置2.1 Maven的安裝
2.1.1 Jdk的狀況
Jdk必須1.6以上的版本ide
2.1.2 從官網下載maven
從http://maven.apache.org/官網上下載最新版本的maven工具
2.1.3 設定path路徑
把下載下來的maven解壓縮,而後有一個bin文件夾,這是一個bin的文件夾的目錄post
F:\work\course\maven\maven\bin
把該目錄追加到環境變量的path中。
2.1.4 利用命令行檢查是否成功
有這個圖,說明maven安裝成功了。
2.2 建庫
2.2.1 先打開路徑
C:\Users\Think\.m2
2.2.2 把settings.xml文件複製到上述的路徑中
F:\work\course\maven\apache-maven-3.0.5-bin\apache-maven-3.0.5\conf
有一個settings.xml文件,複製到C:\Users\Think\.m2
2.2.3 修改settings.xml文件
<localRepository>F:/work/course/maven/mavenRepository/</localRepository>
指定倉庫的路徑
在這裏mavenRepository就是倉庫的路徑
2.3 Maven的配置
說明:
bin中存放可執行的二進制文件
conf存放settings.xml文件
lib 運行maven所依賴的jar包
2.4 maven的約定
src/main/java 存放項目的java文件
src/main/resources 存放項目的資源文件,如spring,hibernate的配置文件
src/test/java 存放全部的測試的java文件
src/test/resources 存放測試用的資源文件
target 項目輸出位置
pom.xml 文件
3 maven 項目
3.1 hello項目
3.1.1 在myeclipse創建一個項目Hello
3.1.2 建立一個包cn.itcast.maven,並在該包下建立一個類
3.1.3 編寫Hello類
3.1.4 在src/test/java中建立一個包cn.itcast.maven,建立一個測試類HelloTest
3.1.5 編寫測試類
3.1.6 編輯pom.xml文件
說明:
project:表示一個工程
modelVersion:爲版本號
3.1.7 用maven命令編譯項目(mvn compile)
在命令行出現這樣的形式,說明編譯OK了。
3.1.8 target文件夾的變化
能夠看到編譯後的文件所有放入到了target裏。
3.1.9 clean
執行命令mvn clean
說明執行成功了。
能夠看到target的目錄沒有了。
3.1.10 test
執行mvn test命令
說明執行成功了,而且運行了一個類,再次看target的結構
說明:
target/classes
存放編譯後的類
target/test-classes
存放編譯後的測試類
target/surefire-reports
存放測試報告
能夠看出,只要進行測試,清理和編譯能夠自動執行了。
3.1.11 package
執行mvn package
這個界面說明打包成功了。
說明:
target/classes
編譯後的類的路徑
target/test-classes
編譯後的測試類的路徑
target/surefire-reports
測試報告
target/maven-archiver
執行package的歸檔
Hello-0.0.1-SNAPSHOT.jar
執行完package命令後打成的jar包
3.2 Hellofriend項目
3.2.1 創建HelloFriend項目工程
3.2.2 編寫pom.xml文件
3.2.3 執行mvn compile命令
執行這個命令的時候會出錯,由於HelloFriend項目是創建在Hello項目基礎之上的,可是如今工程中沒有引入Hello.java這個類。因此會出錯。
3.2.4 執行mvn clean install命令
一、 打開命令行
二、 把當前路徑調節到Hello工程的根目錄
三、 執行mvn clean install命令,把Hello整個工程放入到倉庫中
若是執行成功,則會在倉庫中看到。
在倉庫中的位置。
3.2.5 執行mvn package命令打包HelloFriend工程
說明成功了。
能夠看到成功之後,在target目錄下多了一個jar包
該jar包爲當前工程的jar包。
3.2.6 創建cn.itcast.maven包及HelloFriend類
3.2.7 編輯HelloFriend類
3.2.8 創建cn.itcast.maven包和測試類HelloFriendTest類
3.2.9 編輯HelloFriendTest類
3.2.10 執行mvn package命令
上圖中的」say hello」就是輸出的結果。
4 maven 的核心概念4.1 項目對象模型
說明:
maven根據pom.xml文件,把它轉化成項目對象模型(POM),這個時候要解析依賴關係,而後去相對應的maven庫中查找到依賴的jar包。
在clean,compile,test,package等階段都有相應的Plug-in來作這些事情。
而這些plug-in會產生一些中間產物。
4.2 插件的位置
在maven解壓後的位置F:\work\course\maven\maven有一個bin文件夾,裏面有
一個文件m2.config文件
set maven.home default ${user.home}/m2,其中該路徑指明瞭倉庫的存儲位置。
其中settings.xml文件中
這個說明了倉庫中的位置。
這裏的插件就是執行maven的各類命令所須要的插件。
4.3 maven座標
4.3.1 maven座標的主要組成
groupId:定義當前maven項目屬於哪一個項目
artifactId:定義實際項目中的某一個模塊
version:定義當前項目的當前版本
packaging:定義當前項目的打包方式
根據這些座標,在maven庫中能夠找到惟一的jar包
4.4 依賴管理
4.5 繼承管理
建立一個項目ParentJunit
新建一個項目:
編輯pom.xml文件
說明:只須要繼承ParentJunit,因此junit就被引入到HelloJunit中了
4.6 倉庫管理
能夠根據maven座標定義每個jar包在倉庫中的存儲位置。
大體爲:groupId/artifactId/version/artifactId-version.packaging
4.6.1 倉庫的分類
本地倉庫
~/.m2/repository/
每個用戶也能夠擁有一個本地倉庫
遠程倉庫
中央倉庫:Maven默認的遠程倉庫
http://repo1.maven.org/maven2
私服:是一種特殊的遠程倉庫,它是架設在局域網內的倉庫
鏡像:用來替代中央倉庫,速度通常比中央倉庫快
5 maven 在 myeclipse 中的應用
5.1 環境配置
若是所示,myeclipse自帶maven,從上圖看以看到Maven JDK是能夠配置的,這裏用了jdk1.6
從上圖能夠看出,咱們能夠利用myeclipse自帶的maven,也可使用本身的maven。
上圖應用的就是本身的maven。
從最下面能夠看出,這是settings.xml文件的路徑。
這幅圖說明了用戶的settings.xml文件的位置和用戶的倉庫的位置。
這是最基本的環境的配置。
5.2 settings.xml文件
5.2.1 倉庫的路徑
經過配置localRepository的值能夠改變倉庫的路徑。
5.2.2 配置私服的路徑
5.2.3 直接鏈接互聯網
若是不想鏈接私服,能夠直接鏈接互聯網。只須要把鏈接私服的全部的路徑去掉便可。
5.3 建立maven工程
5.3.1 建立java project
選擇Maven Project
選擇快速建立maven-archetype-quickstart
填寫group ID,Artiface Id,Version,Package屬性
而後點擊finish就能夠了。
5.3.2 建立web project
新建立一個web project
添加maven support便可。