1. 程式人生 > >Maven_學習、搭建、應用

Maven_學習、搭建、應用

一、什麼是Maven?

  

  Apache maven 官網: http://maven.apache.org/

  Maven3的所有版本的下載地址:https://archive.apache.org/dist/maven/maven-3/

  Apache Maven是一個軟體專案管理和綜合工具。基於專案物件模型(POM)的概念,Maven可以從一箇中心資料片管理專案構建,報告和檔案。

 這是maven的一系列執行流程:

二、maven的安裝和配置

  Maven的安裝,解壓maven的安裝包即可使用

  Maven的目錄介紹
    Bin:存放執行指令碼檔案的地方
    Boot:存放一些擴充套件的地方
    Conf:maven的核心配置檔案存放的路徑
    Lib:maven的依賴包

     

 

  maven的配置:

    主要的配置檔案是    conf >> settings.xml

  在配置檔案中主要配置以下內容:

  1、配置本地倉庫的路徑

  

  2、可以選擇配置阿里雲的maven倉庫映象(對於maven倉庫的jar下載速度有影響)

    

<mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name
>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>

  3、配置maven的環境變數

  

MAVEN_HOME=該處填寫個人maven的路徑E:\apache-maven-3.2.1
Path=%MAVEN_HOME%\bin

  4、進行驗證

  到此說明maven已經安裝完畢。

三、maven與eclipse的整合開發

  1、如果eclipse沒有maven外掛,就需要安裝外掛,開啟eclipse驗證下

 開啟window >> preferences >> maven  如果沒有maven就需要安裝外掛 —> 2

  2、安裝maven外掛

    開啟eclipse點選help-->Install New Software,然後輸入要

  下載外掛的連結地址 http://m2eclipse.sonatype.org/sites/m2e   後回車,勾選擇要下載的項,點選下一步進行下載。下載完成會自動安裝

  速度可能會有些慢,還有第二種離線安裝的方法,網路搜尋 eclipse-maven-plugin  進行下載

  複製到eclipse的安裝目錄下,如果提示資料夾已經存在,直接合並即可。

3、進行重啟驗證是否安裝成功

 4、進行相關配置

  配置maven的安裝目錄

  window > preferences > maven >Installations > Add > Directory(選擇你的maven目錄) > Finsh > Apply 應用即可

  配置maven倉庫的位置

其中預設選擇maven安裝目錄下的settings.xml,可以自己自定義maven倉庫目錄(推薦)。

四、在eclipse中進行maven專案的開發

  1、java專案工程的開發

這裡選擇可以跳過maven骨架的設定(推薦)

  2、javaweb專案的開發

  只是這裡的選擇是 war

  對於maven中的web.xml檔案缺失問題,可以使用  專案上右擊選擇javeEE的工具幫我們建立

  

  每個maven軟體專案的管理和工具都在pom.xml中進行配置  詳細看 ——>  五

五、maven的核心概念

  1、maven中座標的概念

    Maven世界擁有大量構建,我們需要找一個用來唯一標識一個構建的統一規範,擁有了統一規範,就可以把查詢工作交給機器

   Maven座標主要組成

    • groupId:定義當前Maven專案隸屬專案
    • artifactId:定義實際專案中的一個模組
    • version:定義當前專案的當前版本
    • packaging:定義該專案的打包方式

  2、maven的依賴管理與依賴範圍 

    如何進行依賴配置?

      傳遞性依賴和可選依賴,排除依賴
    其中依賴範圍scope 用來控制依賴和編譯,測試,執行的classpath的關係. 主要的是三種依賴關係如下:
    1.compile: 預設編譯依賴範圍。對於編譯,測試,執行三種classpath都有效
    2.test:測試依賴範圍。只對於測試classpath有效
    3.provided:已提供依賴範圍。對於編譯,測試的classpath都有效,但對於執行無效。因為由容器已經提供,例如servlet-api
    4.runtime:執行時提供。例如:jdbc驅動

      依賴範圍對傳遞依賴的影響

  

      Maven的直接依賴與間接依賴

  

  3、maven 倉庫管理

  用來統一儲存所有Maven共享構建的位置就是maven倉庫(簡單而言就是專案所需的各種依賴jar包)

  Maven倉庫佈局
    • 根據Maven座標定義每個構建在倉庫中唯一儲存路徑
    • 大致為:groupId/artifactId/version/artifactId-version.packaging
  倉庫的分類
    • 本地倉庫
      ~/.m2/repository/
      每個使用者只有一個本地倉庫
    • 遠端倉庫
    • 中央倉庫:Maven預設的遠端倉庫
      http://repo1.maven.org/maven2
    • 私服:是一種特殊的遠端倉庫,它是架設在區域網內的倉庫

  4、maven的生命週期

    何為生命週期?
      • Maven生命週期就是為了對所有的構建過程進行抽象和統一
      • 包括專案清理,初始化,編譯,打包,測試,部署等幾乎所有構建步驟
     Maven三大生命週期
      • clean:清理專案的
      • default:構建專案的
      • site:生成專案站點的

      • 生命週期Maven有三套相互獨立的生命週期,請注意這裡說的是“三套”,而且“相互獨立”,這三套生命週期分別是:
        Clean Lifecycle 在進行真正的構建之前進行一些清理工作。
        Default Lifecycle 構建的核心部分,編譯,測試,打包,部署等等。
        Site Lifecycle 生成專案報告,站點,釋出站點。
        再次強調一下它們是相互獨立的,你可以僅僅呼叫clean來清理工作目錄,僅僅呼叫site來生成站點。當然你也可以直接執行 mvn clean install site 執行所有這三套生命週期。

     

  5、maven的外掛

    • Maven的核心僅僅定義了抽象的生命週期,具體的任務都是交由外掛完成的
    • 每個外掛都能實現多個功能,每個功能就是一個外掛目標
    • Maven的生命週期與外掛目標相互繫結,以完成某個具體的構建任務

  例如:

<build>
<plugins>
        <!--     配置Tomcat外掛 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <path>/</path>
                    <port>8086</port>
                </configuration>
            </plugin>
<!--  maven的原始碼打包外掛 -->
 <plugin>  
                <artifactId>maven-source-plugin</artifactId>  
                <version>2.4</version>  
                <configuration>  
                    <attach>true</attach>  
                </configuration>  
                <executions>  
                    <execution>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>jar-no-fork</goal>  
                        </goals>  
                    </execution>  
                </executions>  
            </plugin>  
</plugins>
    </build>
View Code

  6、maven的私服

    什麼是私服?
    為什麼使用Nexus私服軟體?
      Nexus安裝與使用
      Nexus的倉庫和倉庫組
        宿主倉庫
        代理倉庫
        倉庫組
    配置Maven從Nexus下載,部署構建

   

  有關於maven私服的使用較少,想了解的可以參考:

    搭建私服那點事:https://www.cnblogs.com/zishengY/p/7794923.html