一、Maven
★ Maven:是Apache旗下的一個開源項目,是一款用于管理和構建java項目的工具。 官網:https://maven.apache.org/
★ Maven的作用: 1. 依賴管理:方便快捷的管理項目依賴的資源(jar包),避免版本沖突問題。 2. 統一項目結構:提供標準、統一的項目結構。 具體的統一結構: - src/main/java: java源代碼目錄 - src/main/resources: 配置文件信息 - src/test/java: 測試代碼 - src/test/resources: 測試配置文件信息 3. 項目構建:maven提供了標準的、跨平臺(Linux、Windows、MacOS) 的自動化項目構建方式。★ Maven模型: * 項目對象模型 (Project Object Model) * 依賴管理模型(Dependency) * 構建生命周期/階段(Build lifecycle & phases)
1、配置Maven倉庫
倉庫:用于存儲資源,管理各種jar包,本質就是一個目錄(文件夾),這個目錄被用來存儲開發中所有依賴(就是jar包)和插件。 Maven倉庫分為:
- 本地倉庫:自己計算機上的一個目錄(用來存儲jar包)
- 中央倉庫:由Maven團隊維護的全球唯一的。倉庫地址:https://repo1.maven.org/maven2/
- 遠程倉庫(私服):一般由公司團隊搭建的私有倉庫
jar包的查找順序則變為: 本地倉庫 --> 遠程倉庫(如果有)--> 中央倉庫Maven安裝: 下載地址:https://maven.apache.org/download.cgi
1、解壓 apache-maven-3.6.1-bin.zip(解壓即安裝)建議解壓到沒有中文、特殊字符的路徑下。
* bin目錄 : 存放的是可執行命令。(mvn 命令重點關注)
* conf目錄 :存放Maven的配置文件。(settings.xml配置文件后期需要修改)
* lib目錄 :存放Maven依賴的jar包。(Maven也是使用java開發的,所以它也依賴其他的jar包)
2、配置本地倉庫 2.1、在自己計算機上新一個目錄(本地倉庫,用來存儲jar包) 2.2、進入到conf目錄下修改settings.xml配置文件 1). 使用超級記事本軟件,打開settings.xml文件,定位到53行 2). 復制<localRepository>標簽,粘貼到注釋的外面(55行) 3). 復制之前新建的用來存儲jar包的路徑,替換掉<localRepository>標簽體內容
3、配置阿里云私服 由于中央倉庫在國外,所以下載jar包速度可能比較慢,進入到conf目錄下修改settings.xml配置文件: 1). 使用超級記事本軟件,打開settings.xml文件,定位到160行左右。 2). 在<mirrors>標簽下為其添加子標簽<mirror>,內容如下:
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf>
</mirror>
注意配置的位置,在<mirrors> ... </mirrors> 中間添加配置。
注: 只可配置一個<mirror>(另一個要注釋!) ,不然兩個可能發生沖突,導致jar包無法下載!!!!!!!
4、配置環境變量 Maven環境變量的配置類似于JDK環境變量配置一樣 1). 在系統變量處新建一個變量MAVEN_HOME MAVEN_HOME環境變量的值,設置為maven的解壓安裝目錄。 2). 在Path中進行配置 PATH環境變量的值,設置為:%MAVEN_HOME%\bin 3). 打開DOS命令提示符進行驗證,出現如圖所示表示安裝成功 mvn -v
5.配置jdk版本
2、配置Maven集成環境
一、當前工程設置:
1、選擇 IDEA中 File => Settings => Build,Execution,Deployment => Build Tools => Maven
2、設置IDEA使用本地安裝的Maven,并修改配置文件及本地倉庫路徑。 Maven home path :指定當前Maven的安裝目錄 User settings file :指定當前Maven的settings.xml配置文件的存放路徑 Local repository :指定Maven的本地倉庫的路徑 (如果指定了settings.xml, 這個目錄會自動讀取出來, 可以不用手動指定)
3、配置工程的編譯版本為11
- Maven默認使用的編譯版本為5(版本過低)
上述配置的maven環境,只是針對于當前工程的,如果我們再創建一個project,又恢復成默認的配置了。
二、全局設置 1、進入到IDEA歡迎頁面 - 選擇 IDEA中 File => close project 2、打開 All settings , 選擇 Build,Execution,Deployment => Build Tools => Maven 3、配置工程的編譯版本為11 這里所設置的maven的環境信息,并未指定任何一個project,此時設置的信息就屬于全局配置信息。 以后,我們再創建project,默認就是使用我們全局配置的信息。
3、創建Maven項目
1、創建一個空項目
2、創建模塊,選擇Maven,點擊Next
3、填寫模塊名稱,坐標信息,點擊finish,創建完成
4、在Maven工程下,創建HelloWorld類
maven-project01|--- src (源代碼目錄和測試代碼目錄) |--- main (源代碼目錄) |--- java (源代碼java文件目錄) |--- resources (源代碼配置文件目錄) |--- test (測試代碼目錄) |--- java (測試代碼java目錄) |--- resources (測試代碼配置文件目錄)|--- target (編譯、打包生成文件存放目錄)
5、編寫 HelloWorld,并運行public class HelloWorld { public static void main(String[] args) { System.out.println("Hello Maven ..."); }
}
4、Maven核心配置文件
POM (Project Object Model) :指的是項目對象模型,用來描述當前的maven項目。
- 使用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"> <!-- POM模型版本 --> <modelVersion>4.0.0</modelVersion>
? <!-- 當前項目坐標 --> <groupId>com.itheima</groupId> <artifactId>maven_project1</artifactId> <version>1.0-SNAPSHOT</version> <!-- 打包方式 --> <packaging>jar</packaging></project>
pom文件詳解:
- <project> :pom文件的根標簽,表示當前maven項目
- <modelVersion> :聲明項目描述遵循哪一個POM模型版本 - 雖然模型本身的版本很少改變,但它仍然是必不可少的。目前POM模型版本是4.0.0
- 坐標 :<groupId>、<artifactId>、<version> - 定位項目在本地倉庫中的位置,由以上三個標簽組成一個坐標
- <packaging> :maven項目的打包方式,通常設置為jar或war(默認值:jar)
?
Maven坐標:使用坐標來定義項目或引入項目中需要的依賴 Maven坐標主要組成 * groupId:定義當前Maven項目隸屬組織名稱(通常是域名反寫,例如:com.itheima) * artifactId:定義當前Maven項目名稱(通常是模塊名稱,例如 order-service、goods-service) * version:定義當前項目版本號
**注意:
* 上面所說的資源可以是插件、依賴、當前項目。
* 我們的項目如果被其他的項目依賴時,也是需要坐標來引入的。
5、導入Maven項目
- 方式1:使用Maven面板,快速導入項目
打開IDEA,選擇右側Maven面板,點擊 + 號,選中對應項目的pom.xml文件,雙擊即可。
說明:如果沒有Maven面板,選擇 View => Appearance => Tool Window Bars
- 方式2:使用idea導入模塊項目
File => Project Structure => Modules => + => Import Module 找到要導入工程的pom.xml
6、依賴配置
依賴:指當前項目運行所需要的jar包。一個項目中可以引入多個依賴: 在maven工程的pom.xml文件中,引入logback的依賴。
1. 在pom.xml中編寫<dependencies>標簽
2. 在<dependencies>標簽中使用<dependency>引入坐標
3. 定義坐標的 groupId、artifactId、version 點擊刷新按鈕,引入最新加入的坐標
?
- 刷新依賴:保證每一次引入新的依賴,或者修改現有的依賴配置,都可以加入最新的坐標。
注意事項:
1. 如果引入的依賴,在本地倉庫中不存在,將會連接遠程倉庫 / 中央倉庫,然后下載依賴(這個過程會比較耗時,耐心等待)
2. 如果不知道依賴的坐標信息,可以到mvn的中央倉庫(https://mvnrepository.com/)中搜索
?
**添加依賴的幾種方式:**
1. 利用中央倉庫搜索的依賴坐標
2. 利用IDEA工具搜索依賴
3. 熟練上手maven后,快速導入依賴
依賴具有傳遞性: 由于logback-classic又依賴了logback-core和slf4j,所以必須把這3個jar包全部復制到項目工程下。 使用maven,當項目中需要使用logback-classic時,只需要在pom.xml配置文件中,添加logback-classic的依賴坐標即可。由于maven的依賴具有傳遞性,所以會自動把所依賴的其他jar包也一起導入。
依賴傳遞可以分為:
1. 直接依賴:在當前項目中通過依賴配置建立的依賴關系
2. 間接依賴:被依賴的資源如果依賴其他資源,當前項目間接依賴其他資源
?
排除依賴: 排除依賴:指主動斷開依賴的資源。(被排除的資源無需指定版本) maven-projectA依賴了maven-projectB,maven-projectB依賴了Junit。基于依賴的傳遞性,所以maven-projectA也依賴了Junit
依賴范圍: 在項目中導入依賴的jar包后,默認情況下,可以在任何地方使用。 可以通過<scope>標簽設置其作用范圍。 作用范圍: 1. 主程序范圍有效(main文件夾范圍內) 2. 測試程序范圍有效(test文件夾范圍內) 3. 是否參與打包運行(package指令范圍內)
scope值 | 主程序 | 測試程序 | 打包(運行) | 范例 |
---|
compile(默認) | Y | Y | Y | log4j |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驅動 |
7、生命周期
Maven的生命周期就是為了對所有的構建過程進行抽象和統一。 描述了一次項目構建,經歷哪些階段。具體指的是項目的生命周期。
生命周期包含了項目的清理,初始化,編譯,測試,打包,集成測試,驗證,部署和站點生成等構建步驟。 Maven對項目構建的生命周期劃分為3套(相互獨立): - clean:清理工作。 - default:核心工作。如:編譯、測試、打包、安裝、部署等。 - site:生成報告、發布站點等。
主要關注以下幾個:
? clean:移除上一次構建生成的文件
? compile:編譯項目源代碼
? test:使用合適的單元測試框架運行測試(junit)
? package:將編譯后的文件打包,如:jar、war等
? install:安裝項目到本地倉庫
Maven的生命周期是抽象的,在Maven的設計中,實際任務(如源代碼編譯)都交由插件來完成。
生命周期的順序是:clean --> validate --> compile --> test --> package --> verify --> install --> site --> deploy
?
需要關注的是:clean --> compile --> test --> package --> install
執行指定的生命周期有兩種執行方式: 1. 在idea工具右側的maven工具欄中,選擇對應的生命周期,雙擊執行 2. 在DOS命令行中,通過maven命令執行:在項目目錄下打開cmd窗口。執行"mvn "+命令
更新依賴索引: 有時候給idea配置完maven倉庫信息后,在idea中依然搜索不到倉庫中的jar包。 打開設置----搜索maven----Repositories----選中本地倉庫-----點擊Update 初始情況下,我們的本地倉庫是沒有任何jar包的,此時會從私服去下載(如果沒有配置,就直接從中央倉庫去下載),可能由于網絡的原因,jar包下載不完全,這些不完整的jar包都是以lastUpdated結尾。此時,maven不會再重新幫你下載,需要你刪除這些以