Maven入門教程(一)


1.Maven的簡介

1.1 什么是maven

是apache下的一個開源項目,是純java開發,並且只是用來管理java項目的。Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標准集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。

1.2 什么是依賴管理

一個java項目需要外部的第三方jar包來進行支持。我們說這個java項目依賴了這些jar包。

依賴管理就是將項目所依賴的jar包按照一定規則進行規范化管理。

1.2.1 傳統項目的依賴管理

傳統的依賴管理就是程序員需要什么jar包,去網上進行下載,然后手動添加到工程中。

缺點:

(1) jar包從網上不好找

(2) jar包沒有進行統一管理,容易造成jar包重復及版本沖突

(3) jar包全部添加到工程中,造成工程過大

1.2.2 maven項目的依賴管理

maven項目有一個文件叫pom.xml。我們通過在此文件中配置jar包的坐標即可將jar包引入到工程中。Jar包的坐標可從maven倉庫中獲取。

好處:

(1)通過pom配置來引入jar包,避免了jar包的版本沖突。

(2)Maven團隊維護了一個jar包倉庫,十分全,避免了去網上尋找jar包的尷尬,節省時間。

1.3 什么是項目構建

項目構建是一個項目從編寫源代碼到編譯,測試,運行,打包,部署,運行的過程。

1.3.1  傳統項目構建過程

(1) 在eclipse中新建一個WEB工程。

(2) 進行編碼及編寫配置文件

(3) 對源代碼進行編譯運行,生成class文件

(4) 打成war包,部署至tomcat

1.3.2  Maven項目構建過程

一個命令tomcat:run完成對項目的構建。

1.4 Maven好處

(1) 一步構建:一個命令即可啟動。

(2) 依賴管理:對jar包統一管理,避免沖突等問題

(3) 跨平台:可在windows及linux下運行

(4) 有利於提高大型項目的團隊開發效率

(5) 越來越多的公司使用maven

2.Maven的安裝配置

2.1 下載安裝

下載地址:http://maven.apache.org/download.cgi

直接解壓到一個沒有中文沒有空格的文件夾里解壓后的目錄如下:

bin目錄:maven的運行文件。mvn.cmd正常運行mvn,mvnDebug.cmd已debug方式運行maven。

boot目錄:maven運行需要類加載器。

conf目錄:maven的配置文件目錄,核心配置文件為其中的setting.xml。

lib目錄:maven所需要的jar包。

2.2 Maven環境變量配置

0、注意:配置maven之前,要配置jdk,確保配置jdk的環境變量

1、maven3.3.9這個版本所需的jdk版本必須要1.7以上

2、最終要運行的是maven軟件中bin目錄的mvn命令

3、系統變量中添加

環境變量的名稱:MAVEN_HOME

變量值:就是maven解壓的目錄C:\Users\hanqing\Downloads\apache-maven-3.6.0

4、把MAVEN_HOME添加到path里

5、驗證maven是否配置成功:

打開dos窗口 輸入: mvn –v

顯示版本號信息即為成功。

2.3 Maven倉庫

2.3.1 maven倉庫的概述

maven倉庫用來存儲jar包。maven項目都是從倉庫中獲取jar包。maven倉庫分三種:本地倉庫,遠程倉庫,中央倉庫。

本地倉庫:用來存儲從遠程倉庫及中央倉庫下載的jar包,自己來維護。項目使用的jar包優先從本地倉庫獲取。本地倉庫的默認位置在${user.home}/.m2/repository。${user.home}表示用戶所在的位置。

遠程倉庫:如果本地倉庫沒有所需要的jar包,默認去遠程倉庫下載。遠程倉庫由公司來進行維護又可稱為私服。

中央倉庫:中央倉庫由maven團隊來進行維護,服務於整個互聯網。其倉庫中存儲大量的jar包。

2.3.2 修改本地倉庫位置

本地倉庫的配置在settings.xml文件中修改。

2.3.3 三種倉庫的關系

 

 

本地項目需要jar包,先從本地倉庫中獲取,如果本地倉庫中沒有,則從私服中獲取,如果私服沒有,則從中央倉庫獲取。獲取到后,本地倉庫及遠程倉庫各存儲一份。如果沒有遠程倉庫,本地倉庫則直接從中央倉庫獲取,然后在本地倉庫存儲一份。

3.目錄,命令及生命周期

3.1 Maven的目錄結構

maven工程具有一定的目錄規范,如下:

src/main/java -------------------存放項目的.java文件

src/main/resources -----------存放項目資源文件,如一些配置文件

src/test/java --------------------存放所有單元測試的java文件,如junit測試類。

src/test/resource --------------測試資源文件

target------------------------------項目輸出位置,編譯后的class文件會輸出到此目錄

pom.xml--------------------------maven項目的核心配置文件

 

3.2 Maven的常用命令

3.2.1 clean

clean是清除命令,執行clean會刪除target下文件。

cmd下執行 mvn clean

3.2.2 compile

compile用來將src/main/java下的文件編譯為class文件,並輸出到target中。

cmd下執行 mvn compile

3.2.3 test

test 用來將src/main/test下的文件進行編譯,同時執行一次。

cmd下執行 mvn test

3.2.4  package

打包,將項目進行打包,如果是jar打包為jar,war打包為war。

3.2.5  install

把項目打包成war包或jar包發布到本地倉庫

3.2.6  tomcat:run

一鍵啟動

3.3 Maven的生命周期

3.3.1 maven的三種生命周期

maven對項目的構建分為三套相互獨立的生命周期。

cleanLifecycle:在項目構建前,先進行一些清理工作。

defaultLifecycle:構建的核心部分,編譯,測試,打包,部署。

siteLifecycle:生成項目報告,站點,發布報告。

3.3.2 maven生命周期的階段

maven的每個生命周期都有很多階段,每個階段對應一個執行命令。

1、clean生命周期:清理項目,包含三個phase。

1)pre-clean:執行清理前需要完成的工作

2)clean:清理上一次構建生成的文件

3)post-clean:執行清理后需要完成的工作

2、default生命周期:構建項目,重要的phase如下。

1)validate:驗證工程是否正確,所有需要的資源是否可用。

2)compile:編譯項目的源代碼。  

3)test:使用合適的單元測試框架來測試已編譯的源代碼。這些測試不需要已打包和布署。

4)package:把已編譯的代碼打包成可發布的格式,比如jar。

5)integration-test:如有需要,將包處理和發布到一個能夠進行集成測試的環境。

6)verify:運行所有檢查,驗證包是否有效且達到質量標准。

7)install:把包安裝到maven本地倉庫,可以被其他工程作為依賴來使用。

8)deploy:在集成或者發布環境下執行,將最終版本的包拷貝到遠程的repository,使得其他的開發者或者工程可以共享。

3、site生命周期:建立和發布項目站點,phase如下

1)pre-site:生成項目站點之前需要完成的工作

2)site:生成項目站點文檔

3)post-site:生成項目站點之后需要完成的工作

4)site-deploy:將項目站點發布到服務器

3.3.3 命令與生命周期關系

每個maven命令對應生命周期的某一階段,例如clean命令對應maven的clean階段。test命令對應maven的default階段。

執行命令會自動將該階段以前的命令執行,例如執行clean命令,將自動執行pre-clean命令。

執行某個生命周期某個階段,不會影響生命周期其他階段。

如果要執行多個生命周期的命令,中間用空格隔開,例如mvn clean compile。

4.項目構建

4.1 Maven在eclipse的配置

1、選擇maven軟件,先通過add進行添加

2、加載setting文件,修改默認的本地倉庫地址

4.2 eclipse瀏覽倉庫

展示maven視圖。

在彈出的視圖下,右鍵Local Repository,點擊Rebuild Index。

點擊前方三角號,發現本地倉庫的jar包已經可以看見。

4.3 maven坐標定義

每個maven工程都需要定義本工程的坐標。坐標是maven對jar包的定義。

groupId:項目名稱,定義為組織名加項目名。

artifactId:模塊名稱

version:版本號snapshot為快照版本,非正式版本,release為正式發布版本

packaging:打包方式

         jar:打成jar包

         war:打成war包

         pom:用於maven工程的繼承,通常父工程設置為pom.xml 

4.4 eclipse搭建maven工程

1、 新建maven項目

2、調過骨架,如果不跳過骨架選擇創建出的項目目錄是不全的

3、填寫坐標

 

4、創建工程

5、處理紅色叉號

手動在webapp文件夾下創建一個WEB-INF文件夾,在里面放一個web.xml文件

6、處理編譯版本

在pom.xml中添加如下代碼后右鍵工程在maven中點擊Maven update。

  <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>  
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

7、創建一個servlet

修改web.xml,刪除重復的代碼,xmlns=http://java.sun.com/xml/ns/javaee

8、添加jar包

在pom中添加如下代碼:

  <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

會發現jar包已添加到項目中

9、啟動項目

右擊項目---run as –maven build …. 輸入tomcat:run,項目執行

5.依賴管理

5.1 依賴范圍

5.1.1 Compile

編譯(compile)時需要, 測試時需要,運行時需要,打包時需要

5.1.2   Provided

編譯(compile)時需要,測試(test)時也需要 ,運行時不需要,打包時不需要。只有當jdk或容器已提供該依賴后才使用。

5.1.3   Runtime  

編譯時不需要,測試時需要,運行時需要,打包時需要

5.1.4   Test

編譯時不需要,測試時需要,運行時不需要,打包也不需要

 

此為本人學習筆記總結。希望大家能順利入門,學習會maven的簡單使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM