1. 程式人生 > >Maven基本使用(圖文教程)

Maven基本使用(圖文教程)

Maven基本使用

一、安裝

  • 下載下來解壓後如下所示
    這裡寫圖片描述
  • 配置環境變數
    這裡寫圖片描述
    這裡寫圖片描述
  • 檢視配置成功與否
    這裡寫圖片描述
  • maven配置檔案
    這裡寫圖片描述
  • maven專案目錄結構
    這裡寫圖片描述
  • 使用myeclipse構建maven專案
    這裡寫圖片描述

  • pom.xml檔案

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>4.0.0</modelVersion> <parent> <groupId>com.robinliew.foo</groupId> <artifactId>foo-war</artifactId> <version>0.0.1</version> </parent> <!-- maven 的所有構件均通過座標進行組織和管理。maven 的座標通過 5 個元素進行定義,其中 groupId、artifactId、version 是必須的,packaging 是可選的(預設為jar),classifier 是不能直接定義的。 groupId組名,主專案標識 定義當前 Maven 專案所屬的實際專案,跟 Java 包名類似 artifactId - 工程名,子專案(模組)標識 定義當前 Maven 專案的一個模組,預設情況下,Maven 生成的構件,其檔名會以 artifactId 開頭 packaging - 打包方式 定義專案打包方式,如 jar,war,pom,zip ……,預設為 jar。 version - 版本 name - 專案描述名 classifier:定義專案的附屬構件。classifier 不能直接定義,通常由附加的外掛幫助生成 -->
<groupId>com.robinliew.mavendemo</groupId> <version>0.0.1</version> <artifactId>com.robinliew.mavendemo</artifactId> <packaging>war</packaging> <name>mavendemo</name> <description>maven快速入門</description> <!-- 配置依賴的jar包 -> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies> </project>
  • 依賴詳解
    這裡寫圖片描述

    • 其中依賴範圍有如下幾種
      • compile:編譯依賴範圍,預設值。此選項對編譯、測試、執行三種 classpath 都有效,如 hibernate-core-3.6.5.Final.jar,表明在編譯、測試、執行的時候都需要該依賴
      • test:測試依賴範圍。只對測試有效,表明只在測試的時候需要,在編譯和執行時將無法使用該類依賴,如 junit;
      • provided:已提供依賴範圍。編譯和測試有效,執行無效。如 servlet-api ,在專案執行時,tomcat 等容器已經提供,無需 Maven 重複引入;
      • runtime:執行時依賴範圍。測試和執行有效,編譯無效。如 jdbc 驅動實現,編譯時只需介面,測試或執行時才需要具體的 jdbc 驅動實現;
      • system:系統依賴範圍。和 provided 依賴範圍一致,需要通過 顯示指定,且可以引用環境變數;
      • import:匯入依賴範圍。使用該選項,通常需要 pom,將目標 pom 的 dependencyManagement 配置匯入合併到當前 pom 的 dependencyManagement 元素。
    • 依賴傳遞和依賴範圍
      • 如果我們的專案引用了一個Jar包,而該Jar包又引用了其他Jar包,那麼在預設情況下專案編譯時,Maven會把直接引用和間接引用的Jar包都下載到本地。
    • 依賴衝突
      • 路徑優先(最短路徑)
      • 宣告優先:引用路徑相同時,先在pom.xml中宣告的優先
    • 依賴排除
    <exclusions>
    <exclusion>
        <groupId>xxx</groupId>
        <artifactId>xxx</artifactId>
    </exclusion>
    </exclusions>
  • 建立一個maven工程
    這裡寫圖片描述
    預設配置,點選兩次next後
    這裡寫圖片描述
    如果沒有顯示上面的archetype骨架列表,則需要我們先進行配置,點選configure如下
    這裡寫圖片描述
    遠端配置是通過訪問http://repo1.maven.org/maven2/archetype-catalog.xml地址進行配置的,由於該檔案較大,且訪問外國網址速度很慢,可能需要等好一會,下面介紹另一種本地配置方式
    這裡寫圖片描述
    這種方式需要提前下載配置檔案通。過瀏覽器檢視http://repo1.maven.org/maven2/archetype-catalog.xml頁原始碼(注意:因為檔案較大,網速較慢,請多等一會),複製到本地,命名為archetype-catalog.xml。
    如果你的myeclipse出現卡頓現象,檢視是否報GC overhead limit exceeded的錯誤,如果是可以通過下面的方式解決
    這裡寫圖片描述
    這裡寫圖片描述
    建立好的maven工程如下所示
    這裡寫圖片描述
    可以看到預設建立的目錄結構只有src/main/resources,缺少 src/main/java和src/test/java 。點選該專案後,右擊,選擇build path–>configure build path。
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    設定完後我們可以檢視maven輸出目錄
    這裡寫圖片描述
    當然這是可以自己點選edit修改的,沒有特殊需求的情況下一般不建議修改。
    這裡寫圖片描述
    此時maven專案的目錄結構完整了。

設定 Project Facets,設定部署打包結構,刪除測試相關目錄
這裡寫圖片描述
這裡寫圖片描述
此時建立一個maven專案完成了。
- 構建及專案部署
右鍵 pom.xml - Run As - Maven -install
這裡寫圖片描述
這裡寫圖片描述

二、maven常用的命令

  • 首先通過cmd進入要操作的專案目錄
    這裡寫圖片描述
    • 常用的幾種命令
      • mvn compile 編譯專案原始碼
      • mvn clean 刪除 target 目錄
      • mvn test 執行測試(執行src/test/java中的測試程式碼)
      • mvn clean package(組合命令) Maven 自動幫我們完成專案的編譯、測試、打包
      • mvn install 效果跟mvn clean package命令一樣,且專案被打包釋出到了 maven 的倉庫,以後其他專案需要依賴到這個專案,就可以通過在 pom.xml 檔案中新增依賴來引用。
      • mvn archetype:generate 自動建立Maven目錄結構
        • 下面是mvn archetype:generate 的使用例子
          這裡寫圖片描述
          預設回車即可,輸入groupId等,回車
          這裡寫圖片描述

三、倉庫

  • maven使用一個倉庫,通過宣告依賴關係可以引用各個構件,各構件通過座標被maven管理。
  • maven倉庫包括本地倉庫和遠端倉庫。優先從本地倉庫(本地倉庫預設地址為:${user.home}/.m2/repository。)中尋找相關構件,遠端倉庫中的構件下載到本地倉庫使用。中央倉庫是 Maven 核心自帶的遠端倉庫,預設地址:http://repo1.maven.org/maven2。私服是架設在本機或區域網中的一種特殊的遠端倉庫,通過私服可以方便的管理其它所有的外部遠端倉庫。
  • 本地倉庫的配置
    這裡寫圖片描述
    這裡寫圖片描述
  • 中央倉庫配置(maven預設配置好的)
    這裡寫圖片描述
    這裡寫圖片描述
  • 映象倉庫的配置
    這裡寫圖片描述
  • 私服的搭建
    大多數公司使用私服,暫時先寫到這,後面抽時間再介紹搭建私服