在這個世界上取得成就的人,都努力去尋找他們想要的機會,若是找不到機會,他們便本身創造機會。「你好,我是夢陽辰,快來和我一塊兒學習起來吧!java
先難後易:先講maven的命令使用,再講maven在idea中的使用。
mysql
Maven是一個快速構建工具。程序員
Maven 翻譯爲"專家"、「內行」,是 Apache 下的一個純 Java 開發的開源項目。基於項目對象模型(縮寫:POM)概念,Maven利用一箇中央信息片段能管理一個項目的構建、報告和文檔等步驟。web
Maven 是一個項目管理工具,能夠對 Java 項目進行構建、依賴管理。sql
Maven 也可被用於構建和管理各類項目,例如 C#,Ruby,Scala 和其餘語言編寫的項目。Maven 曾是 Jakarta 項目的子項目,現爲由 Apache 軟件基金會主持的獨立 Apache 項目。apache
傳統開發項目存在的問題:服務器
傳統開發項目的問題,沒有使用maven 【maven】管理的項目不少模塊,模塊之間有關係,手工管理關係,比較繁瑣。網絡
2)須要不少第三方功能,須要不少jar文件,須要手工從網絡中獲取各中jar框架
3)須要管理jar的版本,你須要的是mysql .5.1.5.jar拿你不能給給一個mysql.4 .0.jar4)管理jar文件之間的依賴,你的項目要使用a.jar。maven
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 ,
建立測試類TestHelloMavenTestpublic void testAdd () {測試HelloMaven的add方法是否正確}
其中testAdd叫作測試方法,它的定義規則1.方法是public的,必須的2.方法沒有返回值,必須的3.方法名稱是自定義的,推薦是Test +方法名稱4.在方法的上面加入@Test4.方法不能有參數
清理(會刪除原來編譯和測試的目錄,即 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. 你不勇敢,沒人替你堅強。