自動化構建工具~Maven

maven圖

1、目前框架須要的技術

簡單業務圖

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

  • Make->ant->Maven->Gradle

3.1 Maven的構建

  1. 編譯過程程序員

    • Java源文件(.java)->編譯->字節碼文件(.class)->交給JVM執行
  2. 部署web

    • 一個BS項目最終運行並非動態WEB自己,而是這個動態Web工程「編譯的結果」
    • 動態Web工程->編譯、部署->編譯結果

web工程部署

  1. 搭建

3.2 構建過程當中的各個環節

  1. 清理:將之前編譯獲得的舊的class字節碼文件刪除,爲下一次編譯作準備
  2. 編譯:將Java源程序編程class字節碼文件
  3. 測試:自動測試,調用junit程序
  4. 報告:測試程序執行的結果
  5. 打包:動態web工程打成war包,Java工程打jar包
  6. 安裝:Maven特定的概念--將打包獲得的文件複製到倉庫中的指定位置
  7. 部署:將動態web工程生產的war包複製到Servlet容器的指定目錄下,使其能夠運行。

3.3 安裝Maven核心程序

  • 檢查JAVA_HOME環境變量
  • 解壓Maven核心程序
  • 配置環境變量
  • 驗證

3.4 Maven的核心概念

  • 約定的目錄結構
  • POM編程

    • pom.xml是Maven工程的核心配置文件
  • 座標api

    • 由三個關鍵來肯定,groupId、artifactId、version
    • 分別是公司或組織名+項目名、模塊名、版本號
    • 其中座標和倉庫路徑:groupId/artifactId/version/artifactId+version.jar
  • 依賴框架

    傳遞依賴

    • Maven解析依賴時會到本地倉庫中進行查找依賴的包maven

      • 對於咱們本身開發的包,須要使用mvn install命令安裝後能夠進入倉庫
    • 依賴的範圍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目錄:存放框架或其餘工具的配置文件

目錄結構

4.二、爲何要遵照約定的目錄結構

  • Maven負責項目的自動構建
  • 約定>配置>編碼

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 修改本地默認的倉庫位置
相關文章
相關標籤/搜索