《maven的学习》 尚硅谷Maven视频(maven零基础入门)B站
?
一、目前的技術在開發(fā)中存在的問題
1.一個項目就是一個工程
(1)如果項目非常龐大,就不適合繼續(xù)使用package來劃分模塊。最好是每一個模塊對應一個工程,利于分工協作。借助于maven就可以講一個項目拆分為多個工程。
2.Jar需要別人替我們準備好,或到官網下載
(1)不同技術的官網提供jar包下載的形式是五花八門的。或者有些技術的官網就是通過maven或者SVN等專門的工具來提供下載。
(2)如果以非正規(guī)的方式下載的jar包,那么其中的內容也可能是不正規(guī)的。借助maven都可以以正規(guī)方式下載jar包。因為所有的知名框架或者第三方的jar包都按照統一的規(guī)范存放在了maven的中央倉庫中。
3.jar包需要手動“復制”、粘貼到WEB-INF/lib目錄下面。
(1)帶來的問題是:同樣的jar包文件重復出現在不同的項目工程當中。一方面浪費存儲空間,一方面也讓工程非常臃腫。借助于maven將jar包保存在倉庫中,有需要使用的工程引用這個jar包即可,并不需要將這個jar包復制過來。
4.一個jar依賴的其他jar包需要自己手動加入到項目當中。
(1)Jar包往往不是孤立存在的,很多jar都需要在其他jar包的支持下工作的我們稱之為依賴關系。commons-fileupload-1.3.jar依賴commons-io-2.0.1.jar,如果沒有Io包,FileUpload就不能正常工作。借助于Maven處理jar包的依賴關系。Maven會自動將依賴的jar包導入進來。
二、maven是什么?
1.Maven是一款服務于Java平臺的自動化構建工具
(1)構建工具發(fā)展的歷程:Make->Ant->Maven->Gradle
(2)構建: 以“Java源文件”、“框架配置文件”、“jsp”、“html”、“圖片”等資源為原材料去生成一個可以運行的過程。
①生成:編譯,搭建,部署
②編譯:.java--->.class
③部署:當我們需要通過瀏覽器訪問Java程序時就必須將包含Java程序的web工程編譯的結果“拿”到服務器指定目錄下,并啟動服務器才行。這個“拿”的過程我們稱之為部署。
1)在開發(fā)工程中,所有的路徑或配置文件中配置的類路徑都是以編譯結果的目錄為的。
④運行時環(huán)境其實是jar包的引用,并沒有jar包本身復制到項目中。
(3)構建中的各個環(huán)節(jié)
①清理:將以前編譯得到的舊的CLASS字節(jié)碼文件刪除。為下一次編譯做準備。
②編譯:將Java源程序編譯成.CLASS字節(jié)碼文件。
③測試:自動測試,自動調用junit程序
④報告:測試程序執(zhí)行的結果。
⑤打包:動態(tài)web工程打war包。Java工程打jar包。
⑥安裝:maven特定的概念——將打包的得到的文件復制到“倉庫”中指定的位置。
⑦部署:將war包復制到servlet容器的指定的目錄下,使其可以運行。
(4)自動化構建
? ? ? ? ? ? ? ? ??
?
三、安裝maven核心程序
1.檢查JAVA_HOME環(huán)境變量(因為maven也是Java寫的,也需要運行在Java虛擬機上,所以也需要通過Java_Home去知道jdk在哪).
2.解壓maven核心程序的壓縮包。
3.配置maven的環(huán)境變量
(1)MAVEN_HOME或M2_HOME(home一般都是bin目錄的上一級)
(2)Path(path一般配置到bin目錄)
4.驗證:運行mvn -v命令查看maven版本
(1)https://www.cnblogs.com/qnly/p/10477378.html(我出現的錯誤)
四、Maven的核心概念
1.約定的目錄結構----->
2.POM
(1)pom:project object model項目對象模型
(2)pom.xml對于maven工程是核心配置文件,與構建過程相關的一切設置都在這個文件中進行配置。
3.坐標(GAV)
(1)maven工程的坐標與倉庫中路徑的對應關系
(2)maven中的坐標:使用下面三個向量在倉庫中唯一定位一個maven工程。
①groupid:公司或組織域名倒序+項目名
eg:<groupid>com.atguigu.maven</groupid>
②artifactid:模塊名
eg:<artifactid>Hello</artifactid>
③version:版本?
eg:<artifactid>Hello</artifactid>
4.依賴
(1)(雖然在pom.xml中添加了依賴信息,但是仍然報錯了)Maven解析依賴信息時會到本地倉庫中查找被依賴的jar包。(不連外網)
(2)外網)對于我們自己開發(fā)的maven工程,使用install命令安裝以后就可以進入倉庫了。
(3)依賴的范圍
①compile
1)對主程序是否有效:有效
2)對測試程序是否有效:有效
3)是否參與打包:參與
②test:junit
1)對主程序是否有效:無效
2)對測試程序是否有效:有效
3)是否參與打包:不參與
③provided:servlet-api.jar
1)對主程序是否有效:有效
2)對測試程序是否有效:有效
3)是否參與打包:不參與
4)是否參與部署:不參與
5.倉庫(目錄)
(1)倉庫的分類
①本地倉庫:當前電腦上部署的倉庫目錄,為當前電腦上所有maven工程服務。
②遠程倉庫:
1)局域網范圍的遠程倉庫(私服):搭建在局域網環(huán)境中,為局域網范圍內的所有maven工程服務。
2)中央倉庫:架設在Internet上,為全世界所有的maven工程服務。
3)中央倉庫的鏡像:為了分擔中央倉庫的流量,提升用戶訪問速度。
(2)倉庫中保存的內容:maven工程
①maven自身所需要的插件
②第三方框架或工具的jar包(一開始也是maven工程只不過后來打成jar包了)
1)第一方:JDK
2)第二方:開發(fā)人員
③我們自己開發(fā)的maven工程(我們自己開發(fā)的maven工程也可以放在倉庫里)。
6.生命周期/插件/目標
(1)各個構建環(huán)節(jié)執(zhí)行的順序:不能打亂順序必須按照既定的正確順序來執(zhí)行。
(2)maven核心程序中定義了抽象的生命周期,生命周期中的各個階段的具體任務是由插件來完成的。
①Clean Lifecycle:在進行真的構架之前進行一些清理工作。
②Default Lifecycle:構建的核心部分,編譯,測試,打包,安裝,部署等等。
③Site Lifecycle生成項目報告,站點,發(fā)布站點。
(3)maven核心程序為了更好的實現自動化構建,按照這一特點執(zhí)行生命周期中各個階段:不論現在執(zhí)行生命周期中的哪一個階段,都是生命周期最初的位置開始執(zhí)行。比如:生命周期Default Lifecycle中執(zhí)行compile階段,則需要從validate開始。
(4)插件和目標
①可以將目標看做“調用插件功能的命令”。
②生命周期的各個階段僅僅定義了要執(zhí)行的任務是什么。
③各個階段和插件的目標是對應的。
④相似的目標由特定的插件完成。
7.繼承
8.聚合
五、第一個Maven工程
1.創(chuàng)建約定的目錄結構
2.為什么要遵守約定的目錄結構呢?
(1)Maven要負責我們這個項目自動化構建,以編譯為例,maven要想自動編譯,需要知道Java源文件保存哪里.
(2)如果我們自定義的東西想要讓框架或工具知道,有兩種方法:
①以配置的方式明確告訴框架
②遵守框架內部存在的約定
3.常用maven命令
(1)注意:
①執(zhí)行與構建相關的maven命令,必須進入pom.xml所在的目錄。(編譯、測試、打包、部署的命令)
(2)常用的命令:
①mvn clean:清理target文件
②mvn compile:編譯主程序
③mvn test-compile:編譯測試程序
④mvn test:執(zhí)行測試
⑤mvn package:打jar包
⑥mvn install:安裝
⑦mvn site:生成站點
1) https://www.cnblogs.com/lxcy/p/8279899.html
(3)關于聯網的問題:
①maven核心程序中僅僅定義了抽象的生命周期,但是具體的工作必須由特定的插件完成,而插件本身并不包含在maven的核心程序中。
②當我們在執(zhí)行maven命令需要用到某些插件的時候,maven核心會首先到本地倉庫中查找。
1)本地倉庫默認位置:[系統當前用戶的家目錄]\.m2\repository
a.C:\Users\pc1\.m2\repository
③maven若是在本地倉庫沒找著需要的插件,那么就會自動連接外網,到中央倉庫去下載。
④如果無法連接外網則構建失敗。
⑤修改默認本地倉庫的位置可以讓maven核心程序到我們事先準備好的目錄下查找插件。
1)找到maven解壓目錄\conf\settings.xml
2)<localRepository>/path/to/local/repo</localRepository>放在注釋外面,默認是用戶下面。
六、eclipse插件
1.在Eclipse中使用maven
(1)maven插件:Eclipse內置
(2)Maven插件的設置:
①installations:指定maven核心程序的位置,不建議使用插件自帶的maven程序,而應該使用自己解壓的那個。
?
?
?
?
總結
以上是生活随笔為你收集整理的《maven的学习》 尚硅谷Maven视频(maven零基础入门)B站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wget下载卡住
- 下一篇: HTML+JavaScript实现黑客帝