![maven圖 maven圖](http://static.javashuo.com/static/loading.gif)
1、目前框架須要的技術
![簡單業務圖 簡單業務圖](http://static.javashuo.com/static/loading.gif)
2、目前的技術在開發的過程當中存在的問題
2.1 一個項目就是一個工程
- 若是項目很是龐大,不適合繼續使用package來劃分模塊,最好是每一個模塊對應一個工程,利於分工協做。
- 藉助於Maven能夠實現一個項目拆分紅多個工程
2.2 項目中須要的jar包必須手動複製、粘貼、到WEB-INF/lib目錄下
- 帶來的問題是:一樣的jar包文件重複出如今不一樣的項目工程中,一方面浪費存儲空間,另外也讓工程比較臃腫
- 藉助Maven,能夠將jar包僅僅保持在「倉庫」中,有須要使用的工程引用這個文件接口,並須要真的把jar包複製過來。
2.3 jar包須要別人爲咱們準備好,或者官網下載
- 不一樣技術的官網提供的jar包下載形式是五花八門。
- 有些技術的官網就是經過Maven或者SVN等工具進行下載的。
2.4 一個jar包依賴的其餘jar包須要本身手動加入到項目中
- FileUpload文件上傳->IO組件,commons-fileupload-1.3.jar依賴於commons-io-2.0.1.jar。
- 全部jar之間的依賴關係,程序員自我瞭解,增長學習成本。
- Maven會自動將依賴的jar包導入進來。
3、 Maven是什麼
Maven是一款服務於Java平臺的自動化構建工具java
3.1 Maven的構建
編譯過程程序員
- Java源文件(.java)->編譯->字節碼文件(.class)->交給JVM執行
部署web
- 一個BS項目最終運行並非動態WEB自己,而是這個動態Web工程「編譯的結果」
- 動態Web工程->編譯、部署->編譯結果
![web工程部署 web工程部署](http://static.javashuo.com/static/loading.gif)
- 搭建
3.2 構建過程當中的各個環節
- 清理:將之前編譯獲得的舊的class字節碼文件刪除,爲下一次編譯作準備
- 編譯:將Java源程序編程class字節碼文件
- 測試:自動測試,調用junit程序
- 報告:測試程序執行的結果
- 打包:動態web工程打成war包,Java工程打jar包
- 安裝:Maven特定的概念--將打包獲得的文件複製到倉庫中的指定位置
- 部署:將動態web工程生產的war包複製到Servlet容器的指定目錄下,使其能夠運行。
3.3 安裝Maven核心程序
- 檢查JAVA_HOME環境變量
- 解壓Maven核心程序
- 配置環境變量
- 驗證
3.4 Maven的核心概念
- 約定的目錄結構
POM編程
座標api
- 由三個關鍵來肯定,groupId、artifactId、version
- 分別是公司或組織名+項目名、模塊名、版本號
- 其中座標和倉庫路徑:groupId/artifactId/version/artifactId+version.jar
依賴框架
![傳遞依賴 傳遞依賴](http://static.javashuo.com/static/loading.gif)
-
依賴的範圍ide
1 compile工具
- 對主程序是否有效 --有效
- 對測試程序是否有效 --有效
- 是否參與打包 --參與
![compile](https://cdn.jsdelivr.net/gh/hshdexy/blogImages/imgs/compile.png)
2 test學習
- 對主程序是否有效 --無效
- 對測試程序是否有效 --有效
- 是否參與打包 --不參與
- 典型例子:junit
3 provided
- 對主程序是否有效 --有效
- 對測試程序是否有效 --有效
- 是否參與打包 --不參與,不參與部署
- 典型例子:servlet-api.jar
![prrvided圖](https://cdn.jsdelivr.net/gh/hshdexy/blogImages/imgs/prrvided%E5%9B%BE.png)
倉庫
倉庫的分類
- 本地倉庫:當前電腦中部署的倉庫
遠程倉庫
- 私服:搭建在局域網中,爲局域網中全部Maven工程服務
- 中央倉庫:架設在Internet上,爲全世界的Maven工程提供服務
- 中央倉庫鏡像:架設在各個大洲的,爲中央倉庫分擔流量的,減輕中央倉庫的壓力,更快響應用戶的請求。
倉庫中保存的內容:倉庫中保存的都是Maven工程
- Maven自身所須要的插件
- 第三方框架或工具的jar包
- 咱們本身開發的Maven工程
- 生命週期/插件/目標
- 繼承
- 聚合
4、Maven工程
4.1 約定的目錄結構
- 1 根目錄:工程名
- 2 src目錄:源碼
- 3 pom.xml文件:Maven工程的核心配置文件
- 4 main目錄:存放主程序
- 5 test目錄:存放測試程序
- 6 Java目錄:Java源文件
- 7 resources目錄:存放框架或其餘工具的配置文件
![目錄結構 目錄結構](http://static.javashuo.com/static/loading.gif)
4.二、爲何要遵照約定的目錄結構
5、 經常使用Maven命令
5.1 注意:執行與構建過程相關的Maven命令,必須進入pom.xml所在的目錄
5.2 經常使用的命令
- mvn clean:清理
- mvn compile:編譯主程序
- mvn test-compile:編譯測試程序
- mvn test:執行測試
- mvn package:打包
- mvn install:安裝包至倉庫
- mvn site:生產站點
6、 關於Maven聯網的問題
- 1 Maven的核心程序中僅僅定義了抽象的生命週期,但具體的工做必須由特定的插件來完成,而插件自己並不包含在Maven的核心程序中
- 2 當個人Maven命令須要某些插件時,Maven核心程序會首先到本地倉庫中查找
- 3 本地倉庫的默認位置:C:UsersLJLRY.m2repository
- 4 Maven核心程序若是在本地倉庫中找不到須要的插件,那麼會自動的到中央倉庫進行下載
- 5 若是此時沒法鏈接外網,則構建失敗
- 6 修改本地默認的倉庫位置