特斯拉回應北京機場二高速追尾事故:駕駛員轉向中大幅度踩下加速踏板導致
Maven學習
今天我們就來學習一下maven,怎麼說呢,maven更像是一種管理的工具,實現的原理是使用外掛。
舉個例子,比如說,一個公司需要做一個專案,這個專案又分成了很多的模組,每個模組又分成了許多的業務等等,這些需要許許多多的小組進行進行,最後再進行整合。
那麼,就有一個很大的問題,IT技術發展這麼快的時代裡,每個人使用的jar包版本,使用的軟體版本,等等,如果不一樣的話,就算單個小模組可以進行,一旦整合就會出現各種各樣的問題,那麼如何避免或者說,儘量的最大程度上減少這種情況發生呢?
那就要用到Maven了,它更像是每一個開發者從網上的一箇中央倉庫中獲取到開發所指定需要的jar包,並且也可以把自己完成的專案打包成一個jar包釋出到這個中央倉庫中,供其他的模組開發人員使用,同時,專案經理等管理員,可以統一開發所需要的版本,最大程度上減少這種非技術問題的情況發生。
第一章 為什麼使用Maven
-
獲取jar包
- 使用Maven之前,自行在網路中下載jar包,效率較低。如【谷歌、百度、CSDN....】
- 使用Maven之後,統一在一個地址下載資源jar包【阿里雲映象伺服器等...】
-
新增jar包
-
使用Maven之前,將jar複製到專案工程中,jar包新增到專案中,相對浪費儲存空間
-
使用Maven之後,jar包統一儲存Maven本地倉庫,使用座標方式將jar包從倉庫引入到專案中
-
-
使用Maven便於解決jar包衝突及依賴問題
第二章 什麼是Maven
- Maven字面意:專家、內行
- Maven是一款自動化構建工具,專注服務於Java平臺的專案構建
- 依賴管理:jar之間的依賴關係,jar包管理問題統稱為依賴管理
-
專案構建:專案構建不等同於專案建立
- 專案構建是一個過程【7步驟組成】,專案建立是瞬間完成的
- 清理:mvn clean
- 編譯:mvn compile
- 測試:mvn test
- 報告:
- 打包:mvn package
- 安裝:mvn install
- 部署:
- 專案構建是一個過程【7步驟組成】,專案建立是瞬間完成的
第三章 安裝並配置maven環境
3.6.3版本下載地址:https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/
- Maven底層使用Java語言編寫的,所以需要配置JAVA_HOME環境變數及Path
- 將Maven解壓非中文無空格目錄下
- 配置MAVEN_HOME環境變數及Path
- 輸入【cmd】,進入命令列視窗,輸入【mvn -v】 ,檢查Maven環境是否搭建成功
連結:https://pan.baidu.com/s/1mE8k22lwUQJAd-GbQ3zzAg
提取碼:twj0
2、配置環境變數
開啟環境變數配置的介面,可以參考怎麼安裝jdk https://www.cnblogs.com/wyh-study/p/11794205.html (當然這裡配置maven的前提是安裝並配置了JDK)
新建
接著,去path中新增配置bin目錄
3、用cmd命令列輸入mvn -v看看有沒有配置成功:(看到如下的介面就說明配置成功了)
4、修改阿里雲映象
開啟之前下載的maven檔案:找到settings.xml檔案,編輯開啟:
</mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
5、新建jar包目錄
Maven配置檔案位置:maven根目錄/conf/settings.xml
設定本地倉庫【預設:C:/使用者家目錄/.m2/repository】
自定義建立目錄,把它當作我後面下載jar包的目標路徑
6、修改剛剛開啟的settings.xml (這裡就不給出程式碼了,每個人的自定義目錄可能不一樣)
第四章 Maven及Idea的相關應用
4.1 將Maven整合到IDEA中
4.2 在IDEA中新建Maven工程
第五章 Maven核心概念
5.1 Maven的POM
-
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"> <!-- 設定父工程座標--> <parent> <artifactId>maven-demo</artifactId> <groupId>com.shujia</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>maven-helloworld</artifactId> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
5.2 Maven約定的目錄結構
- 專案名
- src【書寫java原始碼】
- main【書寫java主程式程式碼】
- java【書寫java程式碼】
- resources【書寫配置檔案程式碼】
- test【書寫測試程式碼】
- java【書寫測試java程式碼】
- main【書寫java主程式程式碼】
- pom.xml【書寫配置檔案程式碼】
- target【編譯後目錄結構】
- src【書寫java原始碼】
5.3 Maven生命週期
- Maven生命週期:按照順序執行各個命令,Maven生命週期包含以下三個部分組成
- Clean LifeCycle:在進行真正的構建之前進行一些清理工作。
- Default LifeCycle:構建的核心部分,編譯,測試,打包,安裝,部署等等。
- Site LifeCycle:生成專案報告,站點,釋出站點。
5.4 Maven外掛和目標
- 外掛:外掛本質是由jar包和配置檔案組成
- 目標:每個外掛都能實現多個功能,每個功能就是一個外掛目標。
5.5 Maven的倉庫【重要】
- 倉庫分類
- 本地倉庫:為當前計算機提供maven服務
- 遠端倉庫:為其他計算機也可以提供maven服務
- 私服:架設在當前區域網環境下,為當前區域網範圍內的所有Maven工程服務。
- 中央倉庫:架設在Internet上,為全世界所有Maven工程服務。
- 中央倉庫的映象:架設在各個大洲,為中央倉庫分擔流量。減輕中央倉庫的壓力,同時更快的響應使用者請求。
- 倉庫中的檔案型別【jar包】
- Maven的外掛
- 第三方框架或工具的jar包
- 自己研發的專案或模組
5.6 Maven的座標【重要】
-
作用:使用座標引入jar包
-
座標由g-a-v組成
[1]groupId:公司或組織的域名倒序+當前專案名稱
[2]artifactId:當前專案的模組名稱
[3]version:當前模組的版本
-
注意
- g-a-v:本地倉庫jar包位置
- a-v:jar包全名
-
座標應用
-
座標參考網址:http://mvnrepository.com
-
語法,示例
<dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.0.1</version> </dependency> </dependencies>
-
第六章 Maven的依賴管理
6.1 依賴範圍
- 依賴語法:<scope>
- compile【預設值】:在main、test、Tomcat【伺服器】下均有效。
- test:只能在test目錄下有效
- junit
- provided:在main、test下均有效,Tomcat【伺服器】無效。
- servlet-api
6.2 依賴傳遞性
-
路徑最短者有先【就近原則】
-
先宣告者優先
-
注意:Maven可以自動解決jar包之間的依賴問題
第七章 Maven中統一管理版本號
-
語法
<properties> <junit-version>4.12</junit-version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit-version}</version> <!-- <scope>test</scope>--> </dependency> </dependencies>
第八章 Maven的繼承
7.1 為什麼需要繼承
- 如子工程大部分都共同使用jar包,可以提取父工程中,使用【繼承原理】在子工程中使用
- 父工程打包方式,必須是pom方式
7.2 Maven繼承方式一
-
在父工程中的pom.xml中匯入jar包,在子工程中統一使用。【所有子工程強制引入父工程jar包】
-
示例程式碼
<packaging>pom</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
7.3 Maven繼承方式二
-
在父工程中匯入jar包【pom.xml】
<packaging>pom</packaging> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement>
-
在子工程引入父工程的相關jar包
<parent> <artifactId>maven_demo</artifactId> <groupId>com.atguigu</groupId> <version>1.0-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>
-
注意:在子工程中,不能指定版本號
第九章 Maven的聚合
-
為什麼使用Maven的聚合
- 優勢:只要將子工程聚合到父工程中,就可以實現效果:安裝或清除父工程時,子工程會進行同步操作。
- 注意:Maven會按照依賴順序自動安裝子工程
-
語法
<modules> <module>maven_helloworld</module> <module>HelloFriend</module> <module>MakeFriend</module> </modules>