一、maven的一鍵構建
咱們再也不使用本地的Tomcat對項目進行編譯、測試、運行、打包、安裝、部署等一系列過程,而是使用maven自身集成的Tomcat插件來完成這些操做的過程,這就是maven的一鍵構建。css
二、maven項目標準目錄結構
src/main/java 目錄:核心代碼部分java
src/main/resources 目錄:配置文件部分web
src/test/java 目錄:測試代碼部分app
src/test/resources 目錄:測試配置文件部分webapp
src/main/webapp 目錄:頁面資源文件部分,包括 js,css,圖片等等maven
三、maven的經常使用命令
3.1 首先打開一個maven項目的根目錄,複製項目地址ide
3.2 打開一個命令行窗口,進入到項目中測試
3.3 mvn clean(清除)插件
注意:輸入 mvn clean 命令以後,發現項目目錄中少了一個叫 target 的文件夾,這個命令的做用是將項目中通過編譯生成的class文件刪除掉。之後在工做中使用這個命令的狀況是若是領導讓咱們接着另一我的的項目進行開發,那麼咱們拿到他的項目以後,他的項目中包含了在他本地編譯好的不少信息,那麼咱們要想將別人的項目導入到本身的本地環境中,就必須先執行 mvn clean 命令,由於咱們每一個人的開發環境不必定都是相同的,那麼在別人電腦上能運行的項目,在咱們電腦上就不必定能運行的通,因此咱們要刪除掉在他本地編譯的全部信息,在本身的電腦上從新編譯。下面介紹編譯的命令命令行
3.4 mvn compile(編譯)
注意:當輸入 mvn compile 命令以後,發現項目目錄中又生成了一個叫 target 的文件夾,這個文件夾下放置的就是Java文件編譯以後生成的class文件,可見 mvn compile 命令是將 src/main/java 下的代碼進行了編譯
此時 target 的目錄結構:
3.5 mvn test (測試)
注意:先執行 mvn clean 清除掉以前編譯的生成的文件,而後執行 mvn test 命令,這個命令就是將 src/test 下的測試的代碼編譯成class文件
此時 target 的目錄結構:
可見,mvn test 命令不只編譯了 src/test 下的測試的代碼,還編譯了 src/main/java 下的正式代碼
3.6 mvn package (打包)
注意:先執行 mvn clean 清除掉以前編譯的生成的文件,而後執行 mvn package 命令,這個命令就是將項目打包,可是在打包以前也將 src/test 下的測試的代碼進行了編譯,還編譯了 src/main/java 下的正式代碼,而後再打成包
此時 target 的目錄結構:
注意:maven自動幫咱們打包,可是爲何會打成 war 包呢?這是由於咱們指定了maven打包時的格式,在項目根目錄下有一個 pom.xml 文件,打開這個文件
3.7 mvn install(安裝)
注意:先執行 mvn clean 清除掉以前編譯的生成的文件,而後執行 mvn install 命令,這個命令不只將 src/test 下的測試的代碼進行了編譯,還編譯了 src/main/java 下的正式代碼,而後再打成包,又把這個包安裝到了本地倉庫。
此時 target 的目錄結構:
3.8 總結:
上面幾個命令分別對項目進行了 清除、編譯、測試、打包、安裝、發佈。(注意:執行發佈命令以前須要進行一些配置才能執行,而其餘幾種命令都能直接執行。沒有演示發佈命令)
當執行 test 命令時,maven 先把 compile 命令執行了一遍後再執行的 test 命令
當執行 package 命令時,maven 先把 compile 命令和 test 命令執行了一遍後再執行的 package 命令
當執行 install 命令時,maven 先把 compile 命令和 test 命令和 package 命令都執行了一遍後再執行 install 命令
當執行 deploy 命令時,maven 先把 compile 命令、test 命令、package 命令、install 命令都執行了一遍後再執行 deploy 命令
當執行後面的命令時,maven會自動把前面的命令執行一遍。
可見,這五個命令是有必定的關係的,其實這五個命令是一套生命週期,叫作 默認生命週期
清除命令也是一套生命週期,叫作 清理生命週期
maven還有一套聲明週期,叫作 站點生命週期(實際開發中用的並很少,就不作介紹)
關係圖: