maven基礎
maven是項目構建工具,用來依賴管理
Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的項目管理工具軟件。
Maven 除了以程序構建能力爲特色之外,還提供高級項目管理工具。由於 Maven 的缺省構建規則有較高的可重用性,所以常常用兩三行 Maven 構建腳本就可以構建簡單的項目。由於 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,而且公司項目採用 Maven 的比例在持續增長。
Maven這個單詞來自於意第緒語(猶太語),意爲知識的積累,最初在Jakata Turbine項目中用來簡化構建過程。當時有一些項目(有各自Ant build文件),僅有細微的差別,而JAR文件都由CVS來維護。於是希望有一種標準化的方式構建項目,一個清晰的方式定義項目的組成,一個容易的方式發佈項目的信息,以及一種簡單的方式在多個項目中共享JARs。
-
maven的兩大核心
依賴管理:對jar的管理
項目構建:對項目進行編譯、測試、打包、部署一系列操作都可以通過命令來實現
-
maven的安裝
下載地址:http://maven.apache.org/download.cgi#
解壓,注意目錄中不要包含中文和空格
配置環境變量:(maven的運行需要jdk)
-
idea配置maven
如果要選擇idea提供好的骨架需要勾選 create from archetype
idea提供好的maven java骨架
注意 ! ! !
創建第一個maven項目的同學(萌新)千萬千萬千萬不要手賤去點quickstart, 普普通通的創建就行了
(否則就會沒有src的目錄, 這是up主在經歷的n多次的創建之後得出的結論)
-
maven配置本地倉庫
apache-maven-3.6.3\conf\settings.xml
-
maven項目標準目錄結構
target:存放編譯之後的文件(target目錄並不屬於maven項目標準目錄結構)
導入maven項目
main:主要的
- java:存放代碼
- resource:存放配置文件
- webapp:存放網頁
test:單元測試
-
maven的常用命令
- clean:清理編譯後的class代碼
mvn clean會刪除target整個目錄包括target目錄本身
- compile:編譯
將項目的.java文件編譯成.class文件,將編譯後.class文件存放到target目錄下
- test:單元測試
單元測試類名有要求: XxxxTest.java(要求以 Test.java結尾)
項目跟目錄下 src/test/java 目錄下的單元測試類都會執行
- package:打包
web project ---war包
java project ---jar包
- install:安裝
打包項目到本地倉庫(可以在本地共享jar包)
-
maven項目的生命週期
在maven中有“三套”生命週期,每一套生命週期相互獨立,互不影響。在一套生命週期內,執行後面的命令前面的命令都會自動執行
- CleanLifeCycle:清理生命週期
clean
- defaultLifeCycle:默認生命週期
compile、test、package、install、deploy
- siteLifeCycle:站點生命週期
site
注意:在一套生命週期內,執行後面的命令前面的命令都會自動執行
-
eclipse中配置maven環境
- 安裝m2e插件
EMBEDDED(embedded內嵌式)內嵌版本
- 修改內嵌版本到自己下載的版本
- 配置userSetting讓eclipse能知道maven倉庫的位置
選擇 settings.xml ,eclipse會自動解析出倉庫位置
- 構建索引
-
創建maven項目
<build>
<plugins>
<!-- 設置jdk的編譯版本爲1.8 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
- 查找依賴
-
依賴範圍
- 修改依賴範圍
總結:如果使用到tomcat自帶的jar包,將項目中依賴作用範圍設置爲:provided
-
運行調試maven項目
-
maven概念模型
兩大核心:
- 依賴管理:對jar包管理
- 項目構建:通過命令進行項目構建
-
傳遞依賴衝突解決
傳遞依賴:A依賴B,B依賴C(1.1版本),B是A的直接依賴,C就是A的傳遞依賴,A還依賴於D,D依賴於C(1.2版本)
- 解決方案
- maven自己的調解原則
- 第一聲名者優先原則:誰先定義的就用誰的傳遞依賴。
- 路徑近者優先原則:直接依賴高於傳遞依賴。
- 排除依賴
- 版本鎖定(推薦使用)
-
通過maven整合ssh框架
-
通過maven對項目進行拆分、聚合(重點)
- 創建父工程
- 創建子工程
運行的方式:
-
私服的應用
安裝私服
下載安裝包
- 倉庫類型
上傳jar包到私服
-
maven的好處