Maven(一)初識Maven

前言java

在這以前一直都有去看關於Maven的相關介紹,可是沒有到真正要用的時候,本身老是覺得懂了。其實真的感受Maven並無想象的那麼簡單!web

那咱們該怎麼去學習maven呢?接下來我將從:spring

      初步認識maven,獲取jar包的三個關鍵屬性 --> 介紹倉庫(獲取的jar包從何而來)-->用命令行管理maven項目(建立maven項目) --> 用myeclipse建立maven項目 -->詳細介紹pom.xml中的依賴關係(座標獲取、定位jar包的各類屬性講解)。apache

爲何要去使用maven呢?緩存

舉例1:假如你正在Eclipse下開發兩個Java項目,姑且把它們稱爲A、B,其中A項目中的一些功能依賴於B項目中的某些類,那麼如何維繫這種依賴關係的呢?框架

   很簡單,這不就是跟咱們以前寫程序時同樣嗎,須要用哪一個項目中的哪些類,也就是用別人寫好了的功能代碼,導入jar包便可。因此這裏也如此,能夠將B項目打成jar包,而後在A項目的Library下導入B的jar文件,這樣,A項目就能夠調用B項目中的某些類了。eclipse

   這樣作幾種缺陷maven

   若是在開發過程當中,發現B中的bug,則必須將B項目修改好,並從新將B打包並對A項目進行重編譯操做ide

   在完成A項目的開發後,爲了保證A的正常運行,就須要依賴B(就像在使用某個jar包時必須依賴另一個jar同樣),兩種解決方案,第一種,選擇將B打包入A中,第二種,將B也發佈出去,等別人須要用A時,告訴開發者,想要用A就必須在導入Bjar包。工具

   兩個都很麻煩,前者可能形成資源的浪費(好比,開發者可能正在開發依賴B的其它項目,B已經存儲到本地了,在導入A的jar包的話,就有了兩個B的jar),後者是咱們常遇到的,找各類jar包,很是麻煩(有了maven就不同了)

舉例2:咱們開發一個項目,或者作一個小demo,好比用SSM框架,那麼咱們就必須將SSM框架所用的幾十個依賴的jar包依次找出來並手動導入,超級繁瑣。

 

上面兩個問題的描述,其實都屬於項目與項目之間依賴的問題[A項目使用SSM的全部jar,就說A項目依賴SSM],人爲手動的去解決,很繁瑣,也不方便,因此使用maven來幫咱們管理。

1、Maven概述

1.一、Maven介紹

 Maven能夠翻譯爲「知識的積累」、「專家」、「內行」。做爲Apache組織中的一個頗爲成功的開源項目,Maven主要服務於基於Java平臺的項目構建、依賴管理、和項目信息管理。Maven在各種項目中均可以大顯身手。

 1) Maven是優秀的構建工具
    除了編寫源代碼,咱們天天有至關一部分時間花在了編譯,運行單元測試,生成文檔,打包,部署等繁瑣且不起眼的工做上,這就是構建。Maven就是一個異常強大的構建工具,可以幫咱們自動化構建過程,從清理,編譯,測試,到生成報告,再到打包和部署

    咱們不須要一遍一遍的輸入命令, 一次又一次點擊鼠標,Maven幫咱們很方便的搞定。Maven是跨平臺的。

 2) Maven仍是依賴管理工具和項目信息管理工具
     Maven經過一組座標可以找到任何一個Java類庫(如jar),Maven給這個類庫世界引入了經緯,讓它們變得有秩序,因而咱們能夠藉助它來有序地管理依賴,輕鬆地解決那些繁雜的依賴問題。

     Maven還能幫助咱們管理本來分散在項目中各個角落的項目信息,包括項目描述,開發者列表,版本控制系統地址,許可證,缺陷管理系統地址等。除了直接的項目信息,經過Maven自動生成的站點,

     以及一些已有的插件,咱們還能輕鬆地得到項目文檔、測試報告、靜態分析報告、源碼版本日誌報告等很是具備價值的項目信息。

 3) 倉庫
    Maven爲全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎能夠找到任何流行開源類庫。經過Maven的一些衍生工具(如Nexus),咱們還能對其進行快速地搜索。只要定位了座標,Maven就可以幫咱們自動下載,省去了手工勞動。

1.二、理解Maven

    若是沒明白maven是什麼,那我的以爲,Maven的核心功能即是合理敘述項目間的依賴關係,通俗點講,就是經過pom.xml文件的配置獲取jar包,而不用手動去添加jar包,而這裏pom.xml文件對於學了一點maven的人來講,就有些熟悉了。

  怎麼經過pom.xml的配置就能夠獲取到jar包呢?pom.xml配置文件從何而來?等等相似問題咱們須要搞清楚,若是須要使用pom.xml來獲取jar包,那麼首先該項目就必須爲maven項目,

  maven項目能夠這樣去想,就是在java項目和web項目的上面包裹了一層maven,本質上java項目仍是java項目,web項目仍是web項目,可是包裹了maven以後,就可使用maven提供的一些功能了(經過pom.xml添加jar包)。

    因此,根據上一段的描述,咱們最終的目的就是學會如何在pom.xml中配置獲取到咱們想要的jar包,在此以前咱們就必須瞭解如何建立maven項目,maven項目的結構是怎樣,與普通java,web項目的區別在哪裏,還有如何配置pom.xml獲取到對應的jar包等等。

1.三、項目的構建與依賴管理

 項目構建過程包括【清理項目】→【編譯項目】→【測試項目】→【生成測試報告】→【打包項目】→【部署項目】這幾個步驟,這六個步驟就是一個項目的完整構建過程。

  

 依賴指的是jar包之間的相互依賴,好比咱們搭建一個Struts2的開發框架時,光光有struts2-core-2.3.16.3.jar這個jar包是不行的,struts2-core-2.3.16.3.jar還依賴其它的jar包,

  依賴管理指的就是使用Maven來管理項目中使用到的jar包,Maven管理的方式就是「自動下載項目所須要的jar包,統一管理jar包之間的依賴關係」。

1.四、Maven的優勢

 1)Maven中使用約定,約定java源代碼代碼必須放在哪一個目錄下,編譯好的java代碼又必須放到哪一個目錄下,這些目錄都有明確的約定。

 2)Maven的每個動做都擁有一個生命週期,例如執行 mvn install 就能夠自動執行編譯,測試,打包等構建過程。

 3)只須要定義一個pom.xml,而後把源碼放到默認的目錄,Maven幫咱們處理其餘事情

 4)使用Maven能夠進行項目高度自動化構建,依賴管理(這是使用Maven最大的好處),倉庫管理。

2、Maven的安裝

2.一、Maven的下載

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

  

  下載完成後,獲得一個壓縮包解壓,能夠看到maven的組成目錄

  

  目錄介紹:

    bin:含有mvn運行的腳本

    boot:含有plexus-classworlds類加載器框架

    conf:含有settings.xml配置文件

    lib:含有Maven運行時所須要的java類庫

    LICENSE.txt, NOTICE.txt, README.txt針對Maven版本,第三方軟件等簡要介紹

2.二、Maven的安裝

  1)首先你要確保你的電腦已經安裝了jdk1.6版本以上的,並配置好了JDK的環境變量。

  2)對apache-maven-3.3.9-bin.zip進行解壓縮,例如解壓到以下目錄(解壓目錄最好不要有中文)

  3)第三步:配置環境變量

    

  4)設置環境變量path,將%M2_HOME%\bin加入到path中,必定要注意使用分號;隔開。

  5)驗證是否配置成功:打開cmd命令——>輸入:mvn-v   

     

3、Maven倉庫

  經過pom.xml中的配置,就可以獲取到想要的jar包(還沒講解如何配置先須要瞭解一下倉庫的概念),可是這些jar是在哪裏呢?就是咱們從哪裏獲取到的這些jar包?答案就是倉庫(用來統一存儲全部Maven共享構建的位置)

  倉庫分爲:本地倉庫、第三方倉庫(私服)、中央倉庫

3.一、本地倉庫

  Maven會將工程中依賴的構件(Jar包)從遠程下載到本機一個目錄下管理,每一個電腦默認的倉庫是在 $user.home/.m2/repository下

    

  個人就是在:C:\Users\Shinelon\.m2\repository

  通常咱們會修改本地倉庫位置,本身建立一個文件夾,在從網上下載一個擁有相對完整的全部jar包的結合,都丟到本地倉庫中,而後每次寫項目,直接從本地倉庫裏拿就好了

    這裏面的jar包相對的完整,不少都是咱們須要的。

  修改本地庫位置:在$MAVEN_HOME/conf/setting.xml文件中修改

    

    

  E:\AStudySoftwere\mavenrepository:就是咱們本身建立的本地倉庫,將網上下載的全部jar包,jar包默認的下載存儲位置,咱們就能夠直接經過maven的pom.xml文件直接拿。

  把jar包下載到本地的好處就是,當編譯時,會優先從本地的jar包去找,若是本地存在,就直接拿來用,若是不存在,就從Maven的中心倉庫去下載。

3.二、第三方倉庫(私服)

  第三方倉庫,又稱爲內部中心倉庫,也稱爲私服(一種特殊的遠程倉庫,它是架設在局域網內的倉庫)。

  私服:通常是由公司本身設立的,只爲本公司內部共享使用。它既能夠做爲公司內部構件協做和存檔,也可做爲公用類庫鏡像緩存,減小在外部訪問和下載的頻率。(使用私服爲了減小對中央倉庫的訪問

  私服可使用的是局域網,中央倉庫必須使用外網(通常公司都會建立這種第三方倉庫,保證項目開發時,項目所需用的jar都從該倉庫中拿,每一個人的版本就都同樣。)

    

 

  注意:鏈接私服,須要單獨配置。若是沒有配置私服,默認不使用

3.三、中央倉庫

  Maven內置了遠程公用倉庫:http://repo1.maven.org/maven2

  這個公共倉庫是由Maven本身維護,裏面有大量的經常使用類庫,幷包含了世界上大部分流行的開源項目構件。目前是以java爲主

  工程依賴的jar包若是本地倉庫沒有,默認從中央倉庫下載

3.四、Maven獲取jar的過程

  

4、手動建立Maven項目

4.一、Maven的目錄結構

  MavenProjectRoot(項目根目錄)
       |----src
       |     |----main
       |     |         |----java ——存放項目的.java文件
       |     |         |----resources ——存放項目資源文件,如spring, hibernate配置文件
       |     |----test
       |     |         |----java ——存放全部測試.java文件,如JUnit測試類
       |     |         |----resources ——存放項目資源文件,如spring, hibernate配置文件
       |----target ——項目輸出位置
       |----pom.xml ----用於標識該項目是一個Maven項目 

  

  圖中有一個target目錄,是由於將該java項目進行了編譯,src/main/java下的源代碼就會編譯成.class文件放入target目錄中,target就是輸出目錄。

4.二、手動建立一個Maven項目

  1)建立項目的根文件夾:FirstMaven

  2)建立一個pom.xml文件 

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <!--全部的Maven項目都必須配置這四個配置項-->
    <modelVersion>4.0.0</modelVersion>
    <!--groupId指的是項目名的項目組,默認就是包名-->
    <groupId>cn.gacl.maven.hello</groupId>
    <!--artifactId指的是項目中的某一個模塊,默認命名方式是"項目名-模塊名"-->
    <artifactId>hello-first</artifactId>
    <!--version指的是版本,這裏使用的是Maven的快照版本-->
    <version>SNAPSHOT-0.0.1</version>
</project>
pom.xml

  3)編寫Java類文件,Maven項目規定,全部的*.java文件必須放在src目錄下的main目錄下的java目錄中,在FirstMaven項目根目錄中建立一個src目錄,而後在src目錄中建立main目錄,在main目錄中再建立java文件夾。

    

  4)使用Maven編譯Hello.java,首先進入到項目根目錄,而後使用命令」mvn compile」進行編譯

    

    使用Maven編譯完成以後,在項目的根目錄會產生一個target文件夾。打開target文件夾,能夠看到裏面有一個classes文件夾,classes文件夾存放的就是編譯成功後生成的.class文件。

    

  5)使用"mvn clean"命令清除編譯結果,也就是把編譯生成的target文件夾刪掉

    

 

  持續更新中,以爲不錯點個「推薦」哦!

相關文章
相關標籤/搜索