項目管理工具-Maven

Maven簡介

Maven是一個項目管理工具。

Maven的作用

1.maven對項目的第三方構件(jar包)進行統一管理。向工程中加入jar包不要手工從其它地方拷貝,通過maven定義jar包的座標,自動從maven倉庫中去下載到工程中。——依賴管理(jar包管理)
2.maven提供一套對項目生命週期管理的標準,開發人員、和測試人員統一使用maven進行項目構建。項目生命週期管理:編譯、測試、打包、部署、運行。——項目構建
3.maven對工程分模塊構建,提高開發效率。

Maven的概念模型

1.項目對象模型 (Project Object Model)。POM對象模型,每個maven工程中都有一個pom.xml文件,定義工 程所依賴的jar包、本工程的座標、打包運行方式。
2.依賴管理系統(基礎核心 )。maven通過座標對項目工程所依賴的jar包統一規範管理。
3.maven定義一套項目生命週期。清理、初始化、編譯、測試、報告 、打包、部署、站點生成。
4.一組標準集合。maven工程有自己標準的工程目錄結構、定義座標有標準。
5.maven 管理項目生命週期過程都是基於插件完成的,例如:開發中使用的tomcat插件。

Maven的倉庫

Maven的倉庫類型

  1. 本地倉庫
    本機電腦上緩存jar包的文件夾。Maven優先從本地倉庫中加載jar包。如果本地倉庫中找不到,纔會去遠程倉庫中下載jar包,並把jar包緩存到本地倉庫中。
  2. 遠程倉庫- 私服
    一些企業、社區提供的jar倉庫服務,這些jar倉庫可能對整個互聯網提供服務,也可以是一個企業內部使用的jar倉庫,所以遠程倉庫也叫私服。(在公司內部架設一臺私服,私服代理其他的遠程倉庫, 當Maven需要下載構件的時候,它從私服請求,如果私服上不存在該構件,則從代理的遠程倉庫下載,緩存在私服上之後,再爲Maven的下載請求提供服務,還可以把一些無法從外部倉庫下載到的構件上傳到私服上。)
  3. 遠程倉庫- 中央倉庫
    倉庫中jar由專業團隊(maven團隊)統一維護。中央倉庫地址是內置到了Maven軟件中的,倉庫地址:http://repo1.maven.org/maven2

Maven的座標

Maven的一個核心的作用就是管理項目的依賴,引入我們所需的各種jar包等。爲了能自動化的解析任何一個Java構件,Maven必須將這些Jar包或者其他資源進行唯一標識,這是管理項目的依賴的基礎,也就是我們要說的座標。maven查詢座標常用網站

座標組成:

  • groupId:公司域名倒寫
  • artifactId:項目名/模塊名
  • version:版本號

Maven安裝與配置

下載地址

安裝Maven與配置環境變量

  1. 安裝Maven
    Maven是免安裝的,直接解壓就行。

    解壓後目錄結構
    在這裏插入圖片描述
    主要目錄介紹

  • bin: Maven的可執行命令文件夾
  • boot: Maven的引導程序(類加載器)
  • conf : 配置文件夾
  • lib: Maven的核心程序代碼(Maven的jar’包)
  1. 配置環境變量

    前提:JDK環境變量已經正確配置。

    MAVEN_HOME=Maven的解壓目錄
    在這裏插入圖片描述

    ②環境變量Path中添加%MAVEN_HOME%\bin
    在這裏插入圖片描述
    驗證Maven是否配置成功,打開cmd,執行命令mvn -version可查看到Maven的版本信息
    在這裏插入圖片描述

配置本地倉庫

準備本地倉庫文件在這裏插入圖片描述
在maven的安裝目錄conf/ settings.xml文件修改,配置如下:
在這裏插入圖片描述

Maven項目的目錄結構

在這裏插入圖片描述
注:一個項目要想使用Maven進行管理,那麼這個項目的目錄結構就必須要符合Maven的要求

Maven構建項目

項目構建常用命令介紹:(暫且瞭解)

  1. 清理Maven項目的target目錄:mvn clean
  2. 重新編譯Maven項目,編譯後的結果在自動生成的target目錄中:mvn compile
    在這裏插入圖片描述
  3. 執行Maven項目中的單元測試代碼:mvn test

注:

  1. 執行的是Maven項目的test目錄中的單元測試類
  2. 單元測試類名必須是Test結尾,例如:DemoTest.java
  1. 把Maven項目進行打包,java項目打包成.jar, web項目打包成.war,聚合工程打成pom包:mvn package
  2. 把Maven項目安裝到本地倉庫中:mvn install
    在這裏插入圖片描述
    注:target目錄用來存放項目構建後的文件和目錄、jar包、war包、編譯的class文件。

Maven管理依賴

1. IDEA創建Maven工程

①IDEA配置Maven

在這裏插入圖片描述
配置後,創建Maven項目時很慢
可做如下設置
1.在VM Options加上-DarchetypeCatalog=local
在這裏插入圖片描述
2.或者在VM Options加上-DarchetypeCatalog=internal,也較慢。

②創建Maven的java項目

1
在這裏插入圖片描述
2
在這裏插入圖片描述
3
在這裏插入圖片描述
4
在這裏插入圖片描述
5.注意
在這裏插入圖片描述
運行
在這裏插入圖片描述
java工程目錄結構
在這裏插入圖片描述
擴展:如要添加配置文件或jar包,則要新建resources文件夾
在這裏插入圖片描述
新建resources文件夾右擊
在這裏插入圖片描述
標記後,idea就可以識別該文件夾了
在這裏插入圖片描述
同理
要導入配置文件,新建resources文件夾後按步驟最後選擇Test Resources Root
缺少java代碼編寫目錄,則新建java文件夾按步驟最後選擇Sources Root

③創建Maven的JavaWeb項目

創建javaweb項目與創建javase項目類似,選擇Maven骨架時,選擇maven-archetype-webapp即可:
在這裏插入圖片描述
javaweb項目創建好的目錄結構如下,根據我們的需要可在原有目錄上按Maven要求的目錄結構添加目錄,並標記目錄。在idea幫我們創建的項目中index.jsp(好像不太規範)和web.xml(版本太低)可刪除,導入常用模板。
在這裏插入圖片描述
把maven項目部署到tomcat上與普通方式直接創建javaweb的項目部署在tomcat的方式一樣。
但是普通方式直接創建javaweb的項目,它會引入servlet相關jar包,而通過maven創建的javaweb項目創建時並沒有引入,所以在編寫代碼時,創建servlet類會報錯,這是我們就需要引入servlet相關依賴。
在這裏插入圖片描述

④引入依賴

項目中需要使用jar包,只需要把jar包的座標配置到項目的pom.xml中即可,通過導入依賴座標,無需手動導入jar包就可以引入jar。在pom.xml的<dependencies>標籤裏增加以下內容(以上面缺少servlet相關依賴爲例):引入後,就可以解決以上沒有導入servlet相關jar包的報錯了。
在這裏插入圖片描述

⑥依賴範圍

創建maven項目時,自動引入的依賴(單元測試相關jar包)如下

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>  <!--依賴範圍-->
    </dependency>

依賴範圍介紹:

如果項目中引入的jar包過多,可能會出現jar包衝突,我們可能設置jar包不同的依賴範圍來解決jar包衝突。

Maven的依賴範圍:

  • compile:默認的依賴範圍,在全範圍有效
  • test單元測試有效,如以上junit使用的就是test範圍
  • provided:其它地方已經提供了,就優先使用已經提供了的。如servlet-api(tomcat容器已提供)通常使用provided範圍,jsp-api也是。
  • runtime運行時有效,編譯時無效,一般數據庫的驅動包使用runtime範圍。
  • system:引入本地倉庫之外的本地jar包。一般不使用

2.maven的依賴傳遞

如引入spring-context,spring-context所依賴的包也都會導進來,這就是maven的依賴傳遞。
在這裏插入圖片描述

3.maven解決jar包衝突問題

①第一聲明優先原則

即哪個jar包聲明在前面,這個先聲明的jar包下的依賴包,就會優先引入到項目中。

②就近原則

如直接依賴比傳遞依賴路徑近,那麼優先引入到項目的jar包是路徑近的直接依賴包。
說明:直接依賴,即項目中直接導入的jar包就是項目的直接依賴包。

③直接排除法

在這裏插入圖片描述
使用直接排除法,第一聲明的jar包不傳遞依賴4.2.4版本的spring-core
在這裏插入圖片描述
擴展:如何查看依賴關係
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章