Maven學習總結(禁止轉載)

 

1. Maven綜述與拓展概念準備

Maven起源:生產環境下開發再也不是一個項目一個工程,而是每個模塊建立一個工程, 而多個模塊整合在一塊兒就須要使用到像 Maven 這樣的構建工具。html

Maven定義:一個自動化構建工具java

Maven簡介:MavenApache軟件基金會組織維護的一款自動化構建工具,專一服務於Java平臺的項目構建和依賴管理。spring

構建:構建就是以咱們編寫的 Java 代碼、框架配置文件、 國際化等其餘資源文件、 JSP apache

面和圖片等靜態資源做爲「原材料」, 去「生產」出一個能夠運行的項目的過程。oracle

2. Maven核心概念

2.1 POM

Project Object Model:項目對象模型。將 Java 工程的相關信息封裝爲對象做爲便於操做和管理的模型。Maven 工程的核心配置。能夠說學習 Maven 就是學習 pom.xml 文件中的配置。框架

2.2約定的目錄結構

2.3座標

Maven 的座標
使用以下三個向量在 Maven 的倉庫中惟一的肯定一個 Maven 工程。
[1]groupid:公司或組織的域名倒序+當前項目名稱
[2]artifactId:當前項目的模塊名稱
[3]version:當前模塊的版本eclipse

<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>jsp

 

 

2.4依賴管理

2.4.1依賴概念與配置

Maven 中最關鍵的部分, 咱們使用 Maven 最主要的就是使用它的依賴管理功能。maven

能夠近似理解爲jar包的import語句思想。ide

<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>

 

2.4.2依賴的範圍

座標的 scope 設置,是依賴的範圍。依賴的範圍有幾個可選值, 咱們用獲得的是: compiletestprovided 三個。

compile

test

provided

主程序

×

測試程序

參與部署

×

×

2.4.3依賴的傳遞性

A 依賴 BB 依賴 CA 可否使用 C 呢? 那要看 B 依賴 C 的範圍是否是 compile, 若是是則可用, 不然不可用。

2.4.4依賴的排除

切斷依賴的傳遞性

<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

 

2.4.5統一管理所依賴的jar包版本

[1] 統一聲明版本號

<properties>
<atguigu.spring.version>4.1.1.RELEASE</atguigu.spring.version>
</properties>

 

[2] 引用前面聲明的版本號

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${atguigu.spring.version}</version>

</dependency>

</dependencies>

2.4.6依賴的原則

  1. 最短路徑優先
  2. 相同路徑先聲明優先
  3. 父工程配置

2.4.7在父工程中管理依賴

<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>

</dependency>
</dependencies>
</dependencyManagement>

 

  1. 子工程配置

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>

 

2.4.8聚合

將多個工程拆分爲模塊後, 須要手動逐個安裝到倉庫後依賴纔可以生效。 修改源碼後也須要逐個手動進行 clean 操做。 而使用了聚合以後就能夠批量進行 Maven 工程的安裝、清理工做。

方法:在總的聚合工程中使用 modules/module 標籤組合,指定模塊工程的相對路徑

<modules>
<module>../Hello</module>
<module>../HelloFriend</module>
<module>../MakeFriends</module>
</modules>

2.5倉庫管理

本地倉庫:爲當前本機電腦上的全部 Maven 工程服務

遠程倉庫:私服、中央倉庫、中央倉庫鏡像

 

2.6生命週期

Maven 有三套相互獨立的生命週期, 分別是:

Clean Lifecycle 在進行真正的構建以前進行一些清理工做。

Default Lifecycle 構建的核心部分,編譯,測試,打包,安裝,部署等等。

Site Lifecycle 生成項目報告,站點,發佈站點。

它們是相互獨立的,你能夠僅僅調用 clean 來清理工做目錄,僅僅調用 site 來生成站點。 固然你也能夠直接運行 mvn clean install site 運行全部這三套生命週期。運行任何一個階段的時候,它前面的全部階段都會被運行

 

2.7插件和目標

Maven 的核心僅僅定義了抽象的生命週期,具體的任務都是交由插件完成的。

●每一個插件都能實現多個功能,每一個功能就是一個插件目標。

Maven 的生命週期與插件目標相互綁定,以完成某個具體的構建任務。

例如:compile 就是插件 maven-compiler-plugin 的一個目標;

pre-clean 是插件 maven-clean-plugin 的一個目標。

3. 資料與工具準備

3.1資料

尚硅谷Java視頻教程_Maven視頻

https://www.bilibili.com/video/av36557763?p=1

3.2工具

MVNrepositoryJar包依賴信息搜索):

https://mvnrepository.com/

EclipseEE

https://www.eclipse.org/downloads/packages/

JDK

https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

Maven:http://maven.apache.org/

相關文章
相關標籤/搜索