170911-關於maven的知識點
簡介: 什麽是maven
是apache下的一個開源項目,是純java開發,並且只是用來管理java項目的.
Maven的好處?
節省空間
就是對jar包的統一管理就是對jar包的統一管理,依賴管理
一鍵構建, 可跨平臺
1.自動化構建和項目管理工具
Ant→Make→Maven→Gradle
2.Maven概述
①讀音:妹文、麥文
②Maven作用一:自動化構建
③Maven作用二:依賴管理
④Maven作用三:項目信息管理
3.自動化構建
①構建[build]:將程序員編寫的代碼從源文件到服務器部署的整個過程。
清理→編譯→測試→報告→打包→部署→運行……
②自動化構建:將構建過程中的各個操作步驟交給構建工具自動完成。
4.依賴管理
①依賴復雜性
[1]路徑最短者優先
MakeFriends --------> HelloFriends----------->Hello
||
log4j.2.1.14 -------> log4j.2.1.17
[2]路徑相同時,先聲明者優先
MakeFriends --------> HelloFriends ------>log4j.2.1.14
-------------->OurFriends ------->log4j.2.1.17
②版本沖突的解決方案
[1]調節原則:
[1]路徑最短者優先原則
[2]路徑相同時,先聲明者優先原則
[2]排除原則
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
<!--這裏不需要指定版本號 -->
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>
[3]版本鎖定原則
<dependencyManagement>
<dependencies>
<dependency>
<!--jar包坐標 -->
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependency>
</dependencies>
</dependencyManagement>
版本鎖定之後,後面再使用到這個的 依賴的時候,就不要寫版本號了!
而且如果有多個相同的需要鎖定的jar包的版本號一致的話,我們可以單獨提取到properties標簽中,
在properties標簽中,子標簽自己定義,標簽的值就是版本號,下面只需要在依賴的地方用${}引用就可以了!
③依賴方式
[1]在pom.xml配置文件中使用dependencies/dependency元素配置依賴信息
[2]通過目標jar包的坐標找到被依賴的文件
④依賴範圍
默認compile:當前所依賴的jar包是當前Maven工程中所有類都需要使用的,最終也需要參與打包。
test:只是當前工程中的測試類需要,最終不參與打包。
provided:當工程在服務器上運行起來後,可以由服務器提供,所以也只是在開發或測試時使用,部署到服務器上時就不需要。 ……
⑤一個自己開發的Maven工程,需要執行“安裝”命令,才能夠被放入到倉庫中。
5.項目信息管理 將項目信息生成一個靜態站點,用於展示。
6.Maven程序本身安裝
①要求當前系統環境下配置了JAVA_HOME
在CMD命令行中輸入:echo %JAVA_HOME% 如果能出來JDK的安裝目錄,說明我們配置了JAVA環境
②將Maven的ZIP壓縮包解壓到一個非中文無空格目錄下【maven.apache.org官方網站下載jar包】
apache-maven-3.3.9-bin.zip
③.配置環境變量,用mvn -v查看是否正確配置了maven【要配置jdk, maven3.3.9這個版本所需的jdk版本必須要1.7以上】
path:
D:\DevSoft\apache-maven-3.3.9\bin
mvn -v查看maven版本
④.先了解一下maven的目錄結構:
projectname
-src
-main
-java
-package
-resources【配置文件或者說資源文件】
-test
-java
-package
-resources
pom.xml
按照上面的maven的目錄結構創建一個maven項目,參照word文檔!
⑤當針對某個Maven工程執行諸如“編譯”、“測試”、“打包”、“部署”等命令時,需要進入到pom.xml所在的目錄下執行。
7.關於Maven聯網
①聯網下載內容:當前命令需要的Maven插件
②Maven主程序僅負責宏觀調度,並不能執行具體的命令。而具體的命令是通過Maven插件完成的。
③Maven主程序會首先到本地倉庫目錄下查找需要的插件,若沒有則聯網從“中央倉庫”下載。若當前環境不能聯網則無法執行構建命令。
④可以修改Maven默認的本地倉庫路徑,使其指向一個提前下載好的目錄 配置文件路徑
Maven解壓目錄/conf/settings.xml
修改
<localRepository>D:\Maven\Repository</localRepository>
mvn -v 查看maven的版本號
clean
compile 編譯
test 測試
package 打包(並將jar包放入到target的目錄中)
site 生成一個站點
clean 刪除target目錄
install 安裝jar包到本地倉庫中
自動創建目錄的兩種方式:
1.mvn archetype:generate 按照提示進行選擇
2.mvn archetype:generate -DgroupId=組織名,公司網址的反寫+項目名
-DartifactId=項目名-模塊名
-Dversion=版本號
-Dpackage=代碼所存在的包名
8.Project Object Model項目對象模型
①Maven將一個Java工程的相關信息封裝後得到的對象。簡稱POM。
②POM配置集中體現在pom.xml文件中,作為一個Maven工程,pom.xml是最核心的配置文件,作用相當於動態Web工程的web.xml。
9.約定的目錄結構
①Maven之所以能夠實現自動化構建,其中一個很重要的原因是要求將特定的文件保存在指定的目錄中。
Hello [工程根目錄]
--src [存放源代碼文件]
-----main [存放主程序目錄]
---------java [存放.java源文件]
---------resources [資源文件或配置文件]
-----test [存放測試程序目錄]
---------java [存放.java源文件]
---------resources [資源文件或配置文件]
--pom.xml 核心配置文件]
②思想:Convention Over Configuration 約定優於配置
10.maven的幾個概念:
1.坐標
①數學坐標:平面中使用橫縱兩個坐標系可以唯一的定位平面中的任何一個點。
向量x:橫坐標 向量y:縱坐標
②使用三個向量在Maven倉庫中唯一的定位一個Maven工程。
向量groupid:公司或組織的名稱+項目名稱 向量artifactId:模塊名稱 向量version:模塊版本
<groupId>com.neuedu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
③如何根據坐標zhao到倉庫中查找對應的Maven工程
坐標
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.0.RELEASE</version>
倉庫中的路徑
org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar
④如何查找指定jar包的坐標:
1.從maven倉庫下載
http://search.maven.org/
http://mvnrepository.com/【建議使用這個】
170911-關於maven的知識點