在這個世界上取得成就的人,都努力去尋找他們想要的機會,如果找不到機會,他們便自己創造機會。“你好,我是夢陽辰,快來和我一起學習起來吧!
先難后易:先講maven的命令使用,再講maven在idea中的使用。
文章目錄
Maven是一個快速構建工具。
Maven 翻譯為"專家"、“內行”,是 Apache 下的一個純 Java 開發的開源項目。基於項目對象模型(縮寫:POM)概念,Maven利用一個中央信息片斷能管理一個項目的構建、報告和文檔等步驟。
Maven 是一個項目管理工具,可以對 Java 項目進行構建、依賴管理。
Maven 也可被用於構建和管理各種項目,例如 C#,Ruby,Scala 和其他語言編寫的項目。Maven 曾是 Jakarta 項目的子項目,現為由 Apache 軟件基金會主持的獨立 Apache 項目。
傳統開發項目存在的問題:
傳統開發項目的問題,沒有使用maven 【maven】管理的項目很多模塊,模塊之間有關系,手工管理關系,比較繁瑣。
2)需要很多第三方功能,需要很多jar文件,需要手工從網絡中獲取各中jar
3)需要管理jar的版本,你需要的是mysql .5.1.5.jar拿你不能給給一個mysql.4 .0.jar4)管理jar文件之間的依賴,你的項目要使用a.jar。
4)解決jar依賴問題,a.jar包依賴於b.jar,你需要手動下載b.jar包。
軟件開發需要編譯代碼一>開發人員自己測試代碼一>把代碼打包一>部署項目到測試服務器一>測試人員測試功能―>測試測試出bug
開發人員需要修改bug一>開發人員自己測試代碼一>把代碼打包->部署項目到測試服務器―>測試人員測試功能一>直到符合功能要求。
上述過程需要重復多次,大型項目中構建項目比較復雜,有很多的配置文件,jar文件,多個子項目等等。都用人力完成費時費力,效率比較低。maven可以讓我們從上面的工作中解脫出來。
mavren的作用
1.maven可以管理jar文件
2.自動下載jar和它的文檔,源代碼。
3.管理jar直接的依賴,a.jar需要b.jar,maven會自動下載b.jar
4.管理你需要的jar版本。
5.幫你編譯程序,把java編譯為class。
6.幫你測試你的代碼是否正確。
7.幫你打包文件,形成jar文件,或者war文件。
8幫你部署項目
我們的項目,往往都要經歷編譯、測試、運行、打包、安裝﹐部署等一系列過程。
什么是構建?
指的是項目從編譯、測試、運行、打包、安裝,部署整個過程都交給maven進行管理,這個過程稱為構建。
一鍵構建
指的是整個構建過程,使用maven一個命令可以輕松完成整個工作。
Maven規范化構建流程如下:
1 .清理,把之前項目編譯的東西刪除掉,我新的編譯代碼做准備。
2.編譯,把程序源代碼編譯為執行代碼,java-class文件批量的,maven可以同時把成千上百的文件編譯為class-javac 不一樣,javac一次編譯一個文件。
3.測試,maven可以執行測試程序代碼,驗證你的功能是否正確。
批量的,maven同時執行多個測試代碼,同時測試很多功能。
4.報告,生成測試結果的文件,測試通過沒有。
5.打包,把你的項目中所有的class文件,配置文件等所有資源放到一個壓縮文件中。”這個壓縮文件就是項目的結果文件,通常java程序,壓縮文件是jar擴展名的。對於web應用,壓縮文件擴展名是.war。
6.安裝,把5中生成的文件jar, war安裝到本機倉庫
7.部署,把程序安裝好可以執行。
1)PoM :“一個文件名稱是pom . xml , pom翻譯過來叫做項目對象模型。
maven把一個項目當做一個模型使用。控制maven構建項目的過程,管理jar依賴。
2)約定的目錄結構:maven項目的目錄和文件的位置都是規定的。
3)坐標:是一個唯一的字符串,用來表示資源的。
4)依賴管理:管理你的項目可以使用jar文件。
5)倉庫管理(了解):你的資源存放的位置。
6)生命周期(了解):maven工具構建項目的過程。
7)插件和目標(了解):執行maven構建的時候用的工具就是插件。
8)繼承
9)聚合
1)下載maven的安裝包。
最好下載:apche-maven-3.3.9-bin.zip版本。目前使用也最為廣泛。
下載地址:http://maven.apache.org/download.cgi
2)解壓文件,解壓到一個非中文目錄。
子目錄conf:maven工具的配置文件 settings.xml。
子目錄bin:執行程序,主要是mvn.cmd.
3)配置環境變量
在系統的環境變量中,指定一個MAVEN_HOME的名稱,指定它的值是maven工具安裝目錄,bin之前的目錄。
4)打開dos窗口,輸入mvn -v出現
表示安裝成功。
注意:maven工具依賴於java,所以你需要事先安裝jdk,並配置環境變量。
約定是大家都遵循的一個規則。
每一個maven項目在磁盤中都是一個文件夾(項目-Hello)。
在Hello目錄下,啟動cmd。在窗口中輸入mvn compile編譯src/main目錄下的所有java文件。
現象:maven正在下載東西。
1.為什么要下載?
maven工具執行的操作需要很多插件(java類–jar文件)完成的。
2.下載什么東西?
java類–jar文件–插件(完成某些功能)
3.下載的東西放哪里了?
默認倉庫。
c:\Users\(用戶名).m2\repository
執行
mvn complie
結果在項目的根目錄下生成target目錄(結果目錄),maven編譯的java程序,最后的class文件都放在target目錄中。
更改本地倉庫地址
設置本機存放資源的目錄位置。
1.修改maven的配置文件,maven安裝目錄/conf/settings.xml。
2.先備份settings.xml
3.修改<localRepository>
指定你的目錄(不要使用中文目錄)
倉庫的概念:
倉庫是存放東西的,Maven 倉庫的是:
1.Maven 的插件,插件也是一些 jar,這些 jar 可以完成一定的功能。
2.我們自己開發項目的模塊
3.第三方框架或工具的 jar 包
分類說明:
1)本地倉庫:本機當前電腦上的資源存儲位置,為本機上所有 Maven工程提供服務。
2)遠程倉庫:不在本機上, 通過網絡才能使用。多電腦共享使用的。
①:中央倉庫:通過Internet訪問,為全世界所有 Maven工程服務。 最權威的。
②:中央倉庫的鏡像:架設在不同位置,歐洲,美洲,亞洲等每個洲都有若干的服務器,為中央倉庫分擔流量。減輕中央倉庫的訪問,下載的壓力。所在洲的用戶首先訪問的是本洲的鏡像服務器。
③:私服:在局域網環境中部署的服務器,為當前局域網范圍內的所有 Maven工程服務。公司中常常使用這種方式。
倉庫的使用:
maven倉庫的使用不需要認為的參與。
在 Maven 構建項目的過程中如果需要某些插件,首先會到 Maven 的本地倉庫中查找,如果找到則可以直接使用;如果找不到,它會自動連接外網,到遠程中央倉庫中查找;如果遠程倉庫中能找到,則先把所需要的插件下載到本地倉庫,然后再使用,並且下次再用到相同的插件也可以直接使用本地倉庫的;如果沒有外網或者遠程倉庫中也找不到,則構建失敗。
pom:( Project Object Mode)項目對象模型,是一個pom.xml文件。
Maven 把一個項目的結構和內容抽象成一個模型,在 xml 文件中進行聲明,以方便進行構建和描述,pom.xml 是 Maven 的靈魂。所以,maven 環境搭建好之后,所有的學習和操作都是關於 pom.xml 的。
坐標:
Maven 把任何一個插件都作為倉庫中的一個項目進行管理,用一組(三個)向量組成的坐標來表示。坐標在倉庫中可以唯一定位一個 Maven 項目。
groupId:組織名,通常是公司或組織域名倒序+項目名artifactId:模塊名,通常是工程名。
version:版本號需要特別指出的是,項目在倉庫中的位置是由坐標來決定的:groupId、artifactId 和 version 決定項目在倉庫中的路徑,artifactId 和 version 決定 jar 包的名稱。
依賴:
一個 Maven 項目正常運行需要其它項目的支持,Maven 會根據坐標自動到本地倉庫中進行查找。
對於程序員自己的 Maven 項目需要進行安裝,才能保存到倉庫中。
如果我們需要什么jar包等依賴:
只需要去這個網站:https://mvnrepository.com/
例如我們需要mysql包。
點進去:
將選擇部分復制添加到pom.xml文件的<dependencies>
標簽下即可。
Maven 的生命周期
Maven 的生命周期就是maven構建項目的過程,清理,編譯,測試,報告,打包,安裝…
對項目的構建是建立在生命周期模型上的,它明確定義項目生命周期各個階段,並且對於每一個階段提供相對應的命令,對開發者而言僅僅需要掌握一小堆的命令就可以完成項目各個階段的構建工作。
構建項目時按照生命周期順序構建,每一個階段都有特定的插件來完成。不論現在要執行生命周期中的哪個階段,都是從這個生命周期的最初階段開始的。
對於我們程序員而言,無論我們要進行哪個階段的構建,直接執行相應的命令即可,無需擔心它前邊階段是否構建,Maven 都會自動構建。這也就是 Maven 這種自動化構建工具給我們帶來的好處。
Maven 對所有的功能都提供相對應的命令,要想知道 maven 都有哪些命令,那要看 maven 有哪些功能。
maven可以獨立使用,通過命令,maven生命周期的執行。
一開始就跟大家說了,maven 三大功能:管理依賴、構建項目、管理項目信息。
管理依賴,只需要聲明就可以自動到倉庫下載;
管理項目信息其實就是生成一個站點文檔,一個命令就可以解決,最后再說;那 maven 功能的主體其實就是項目構建。
Maven 提供一個項目構建的模型,把編譯、測試、打包、部署等都對應成一個個的生命周期階段,並對每一個階段提供相應的命令,程序員只需要掌握一小堆命令,就可以完成項目的構建過程。
maven插件:
maven命令執行時,真正完成功能的時插件,插件就是一些jar文件,一些類。
單元測試:
單元測試(測試方法):用的是junit,. junit是一個專門測試的框架(工具)。junit測試的內容:測試的是類中的方法,每一個方法都是獨立測試的。
方法是測試的基本單位(單元)
maven借助單元測試,批量的測試你類中的大量方法是否符合預期。
使用步驟:
1.加入依賴,在pom.xml加入單元測試的依賴。
2.在maven項目中的src/test/java目錄下,創建測試程序。
推薦的創建和方法的提示:
1.測試類的名稱 Test+你要測試的類名。
2.測試的方法名稱 test+方法名稱
2.在maven項目中的src/test/java目錄下,創建測試程序。
例如你要測試HelloMaven ,
創建測試類TestHelloMavenTest
public void testAdd () { 測試HelloMaven的add方法是否正確 }
其中testAdd叫做測試方法,它的定義規則
1.方法是public的,必須的 2.方法沒有返回值,必須的 3.方法名稱是自定義的,推薦是Test +方法名稱4.在方法的上面加入@Test 4.方法不能有參數
清理(會刪除原來編譯和測試的目錄,即 target 目錄,但是已經 install 到倉庫里的包不會刪除)
mvn clean
編譯主程序(會在當前目錄下生成一個 target,里邊存放編譯主程序之后生成的字節碼文件)
編譯main/java/目錄下的java為class文件,同時把class拷貝到target/classes目錄下面main/resources目錄下的所有文件都拷貝到target/classes目錄下.
mvn compile
編譯測試程序(會在當前目錄下生成一個 target,里邊存放編譯測試程序之后生成的字節碼文件)
mvn test-compile
測試(會生成一個目錄surefire-reports,保存測試結果)
mvn test
打包主程序(會編譯、編譯測試、測試、並且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包)
mvn package
安裝主程序(會把本工程打包,並且按照本工程的坐標保存到本地倉庫中)
mvn install
部署主程序(會把本工程打包,按照本工程的坐標保存到本地庫中,並且還會保存到私服倉庫中。
還會自動把項目部署到 web 容器中)。
mvn deploy
插件可以在自己的項目中設置,最常使用的是 maven 編譯插件。設置項目使用的 jdk 版本時通過編譯插件指定。pom.xml 文件<build>
中設置
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <!--插件的名稱--> <artifactId>maven-compiler-plugin</artifactId> <!--插件的版本--> <version>3.8.1</version> <configuration> <!-- 告訴maven 寫的代碼是在jdk1.8上編譯的。 <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
clean 構建之后清理目標文件。刪除目標目錄。
compiler 編譯 Java 源文件。
surefile 運行 JUnit 單元測試。創建測試報告。
jar 從當前工程中構建 JAR 文件。
war 從當前工程中構建 WAR 文件。
javadoc 為工程生成 Javadoc。
antrun 從構建過程的任意一個階段中運行一個 ant 任務的集合。
maven配置阿里雲倉庫鏡像
為什么配置,因為中央倉庫在國外,下載速度極慢。
配置中用倉庫鏡像可以提供下載速度。
修改settting文件
在mirrors標簽下添加子節點。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
< mirrorOf>可以設置為指定中央倉庫做鏡像。
< mirrorOf>central< /mirrorOf> 為名為“central”的中央倉庫做鏡像; < mirrorOf>*< /mirrorOf> 為所有中央倉庫做鏡像。
Maven默認中央倉庫的id 為 central。id是唯一的。
1.idea中內置了maven,一般不使用內置的,因為內置修改maven的設置不方便。
2.使用自己安裝的maven,需要覆蓋idea中的默認的設置。讓idea指定maven安裝位置等信息。
3.File–>settings(當前項目設置)
pom.xml配置文件
注:如果不想用模板,只想創建普通的maven項目,
在第一步不用勾選模板創建即可。
ou are not brave, no one for you to be strong. 你不勇敢,沒人替你堅強。