MAVEN 快速教程
一.MAVEN概念和安裝
Maven 是專門用於構建和管理Java相關項目的工具,Maven是意第緒語,依地語(猶太人使用的國際語),表示專家的意思。 所以用Maven管理Java 項目,你就是專家了 -_-!
Maven 主要用處一:相同的項目結構
使用Maven管理的Java 項目都有着相同的項目結構
- 有一個pom.xml 用於維護當前項目都用了哪些jar包
- 所有的java代碼都放在 src/main/java 下面
- 所有的測試代碼都放在src/test/java 下面
Maven主要用處二:統一維護jar包
比如說有3個Java 項目,這些項目都不是maven風格。那麼這3個項目,就會各自維護一套jar包。 而其中有些jar包是相同的。
而maven風格的項目,首先把所有的jar包都放在"倉庫“ 裏,然後哪個項目需要用到這個jar包,只需要給出jar包的名稱和版本號就行了。 這樣jar包就實現了共享
如圖所示,在pom.xml裏,表示用到了mysql 的jar包,版本號是5.1.30。
需要先配置好JAVA_HOME環境變量;%JAVA_HOME%\bin
下載maven,配置環境變量
我的電腦,右鍵–》高級系統設置–》高級–》環境變量:
path–》編輯–》新增,寫上maven的路徑;
D:\apache-maven-3.6.3\bin
命令:mvn -v,可以看到版本號。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rfaIXLMb-1591434544839)(E:\政通路\課堂筆記\S2\assets\image-20200527153714918.png)]
核心:依賴管理和一鍵構建
二. 倉庫概念
所謂的倉庫就是用於存放項目需要的jar包的。
maven採用一個倉庫,多個項目的方式,讓多個項目共享一個倉庫裏的相同jar包。
jar包的管理,從哪裏來,這是一個問題???有人說,拷貝過來,拷貝來,拷貝去,問題,中毒。版本不一致,開發者使用jar包版本不一致的問題。
2.1中央倉庫
遠程存儲jar包的倉庫,是一個大的集中式倉庫,maven
下載jar包—》從哪裏下載–》maven中央倉庫。maven 會默認從maven官方提供的服務器下載jar包。
倉庫默認位置的配置文件:
D:\software\apache-maven-3.6.3\conf\settings.xml
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vDGXPE0N-1591434544840)(E:\政通路\課堂筆記\S2\assets\image-20200527154651485.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UNJX6InM-1591434544845)(E:\政通路\課堂筆記\S2\assets\image-20200605144739906.png)]
使用阿里雲下載jar包
而官方服務器在國外,因爲大家都知道的原因,網速很慢,而且容易卡斷。 爲了便於快速下載相關jar包,可以使用國內maven 阿里雲的下載地址:
打開:
D:\software\apache-maven-3.5.0\conf\settings.xml
在mirrors下新加一個阿里雲的鏡像地址:
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
2.2 本地倉庫
我們開發的時候,將遠程中央倉庫的jar包下載到本地倉庫,項目讀取本地倉庫的jar。
setting文件修改倉庫位置:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-70Rkw8fI-1591434544849)(E:\政通路\課堂筆記\S2\assets\image-20200528093721253.png)]
2.3 私服倉庫
公司裏面,自己搭建的類似中央倉庫的倉庫,供本公司開發者使用的集中式倉庫。
三.MAVEN原理
Maven的基本原理很簡單,採用遠程倉庫和本地倉庫以及一個pom.xml,將pom.xml中定義的jar文件從遠程倉庫下載到本地倉庫,各個應用使用同一個本地倉庫的jar,同一個版本的jar只需下載一次,而且避免每個應用都去拷貝jar。如圖1同時它採用了現在流行的插件體系架構,只保留最小的核心,其餘功能都通過插件的形式提供,所以maven下載很小,在執行maven任務時,纔會自動下載需要的插件。
POM是項目對象模型(Project Object Model)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qsc2B4qr-1591434544851)(E:\政通路\課堂筆記\S2\assets\wps1.jpg)]
Maven有一個官方的倉庫,是一個微內核,通過網絡將需要的文件下載到本地,通過官方倉庫將相應的類庫進行統一管理。
基本屬性:
groupId:項目或者組織的唯一標誌,並且配置時生成路徑也是由此生成,如org.myproject.mojo生成的相對路徑爲:/org/myproject/mojo
artifactId:項目的通用名稱
version:項目的版本
packaging:打包機制,如pom,jar,maven-plugin,ejb,war,ear,rar,par
name:用戶描述項目的名稱,無關緊要的東西,可選
url:寫明開發團隊的網站,無關緊要,可選
其中groupId,artifactId,version,packaging這四項組成了項目的唯一座標。一般情況下,前面三項就可以組成項目的唯一座標了。
properties:聲明一些常量。如:<file.encoding>UTF-8<file.encoding>引用時 ${file.encoding}
plugin:聲明項目中所使用的插件,如熱部署時,需要的tomcat插件(放build裏面):
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- 源代碼使用的開發版本 -->
<source>1.7</source>
<!-- 需要生成的目標class文件的編譯版本 -->
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<path>/ccc</path>
<server>tomcat</server>
<username>tomcat</username>
<password>tomcat</password>
</configuration>
</plugin>
</plugins>
*依賴關係:(*依賴關係是POM的重要部分*)*
junit
junit
3.8.1
test
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Qj1Sy6NK-1591434544854)(E:\政通路\課堂筆記\S2\assets\wps2.jpg)]
scope : 依賴範圍,默認compile還有test,provided,runtime,system compile(編譯範圍)、provided(已提供範圍)、runtime(運行時範圍)、test(測試範圍)、system(系統範圍)。
如何新建一個maven項目
1.配置maven
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-atyEAfJr-1591434544857)(E:\政通路\課堂筆記\S2\assets\image-20200605145434829.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xS3Gny2d-1591434544858)(E:\政通路\課堂筆記\S2\assets\image-20200605145443266.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JLcewfIm-1591434544861)(E:\政通路\課堂筆記\S2\assets\image-20200605145616471.png)]
2.創建新項目
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JkODoWPp-1591434544864)(E:\政通路\課堂筆記\S2\assets\image-20200605145705501.png)]
3.創建maven項目
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-x14rXdst-1591434544867)(E:\政通路\課堂筆記\S2\assets\image-20200605145917600.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KoYOz94m-1591434544869)(E:\政通路\課堂筆記\S2\assets\image-20200605150027480.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gL5u354Y-1591434544873)(E:\政通路\課堂筆記\S2\assets\image-20200605150100711.png)]
4.maven項目結構
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fNbnLj2B-1591434544874)(E:\政通路\課堂筆記\S2\assets\image-20200605150329661.png)]加
5.jar依賴
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yzBL1hAK-1591434544880)(E:\政通路\課堂筆記\S2\assets\image-20200605150636816.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TTMPPCgs-1591434544885)(E:\政通路\課堂筆記\S2\assets\image-20200605150732318.png)]
查看jar包位置:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SG23xp0W-1591434544887)(E:\政通路\課堂筆記\S2\assets\image-20200605161131487.png)]
6.測試
在test–>java下新建TestMysql類
public class TestMysql {
public static void main(String[] args) {
//jdbc:加載驅動;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
tring[] args) {
//jdbc:加載驅動;
try {
Class.forName(“com.mysql.jdbc.Driver”);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}