maven工程的標準目錄結構、maven的常用命令以及maven的生命週期

maven工程的標準目錄結構

一個web工程都會有其標準目錄結構,更何況是一個maven工程呢!那啥是maven工程呢?使用maven創建的工程我們就稱它爲maven工程。maven工程具有一定的目錄規範,如下圖所示。
在這裏插入圖片描述


maven的常用命令

  1. mvn compile
    compile是maven工程的編譯命令,作用是將src/main/java下的java源文件編譯爲class文件並輸出到target下的classes目錄下。
    下面我就來演示一下該編譯命令。首先進入maven工程目錄(當前目錄有pom.xml文件)下,然後運行一下mvn compile命令。
    在這裏插入圖片描述
    編譯成功之後,可以看到項目的根目錄下多了一個target文件夾,這個文件夾就是編譯成功之後maven幫我們生成的文件夾。
    打開target文件夾,可以看到裏面有一個classes文件夾,classes文件夾中存放的就是maven幫我們編譯好的class文件。
    這就是使用maven自動編譯項目的過程。

  2. mvn clean
    clean是maven工程的清理命令,執行該命令會刪除target目錄及其目錄下的所有內容。
    在這裏插入圖片描述

  3. mvn test
    test是maven工程的測試命令,運行該命令會執行src/test/java下的單元測試類。
    在這裏插入圖片描述
    測試成功之後,可以看到helloworld項目的根目錄下多了一個target文件夾,這個文件夾就是測試成功之後maven幫我們生成的。
    打開target文件夾,可以看到裏面有一個classes和test-classes文件夾
    也就是說,如果執行了mvn test命令來測試項目,那麼maven會先幫我們編譯項目,然後再運行src/test/java下的單元測試類。

  4. mvn package
    package是maven工程的打包命令,對於普通的Java工程來說,執行該命令,會打成jar包,對於web工程來說,執行該命令,會打成war包。
    在這裏插入圖片描述
    打包成功之後,可以看到項目的根目錄下的target文件夾中多了一個demo-1.0-SNAPSHOT.jar,這個demo-1.0-SNAPSHOT.jar就是打包成功之後maven幫我們生成的jar文件。

  5. mvn install
    install是maven工程的安裝命令,執行該命令,會將maven工程打成jar包或war包併發布到本地倉庫中。
    在這裏插入圖片描述
    從圖中紅色框中可以看出,maven工程被打成jar併發布到了本地倉庫。
    安裝成功之後,首先會在項目的根目錄下生成target文件夾,打開target文件夾,可以看到裏面會有demo-1.0-SNAPSHOT.jar,這個jar包就是安裝成功之後maven幫我們生成的jar文件。
    除此之外,在我們的本地倉庫中也會有一個demo-1.0-SNAPSHOT.jar,所以maven安裝項目的過程,實際上就是把項目進行了【清理】→【編譯】→【測試】→【打包】,再把打包好的jar包放到我們指定的存放jar包的maven倉庫中
    結論: 使用了mvn install命令,就把maven構建項目的【清理】→【編譯】→【測試】→【打包】的這幾個過程都做了,同時將打包好的jar包或者war包發佈到本地的maven倉庫中,所以maven最常用的命令還是mvn install,這個命令能夠做的事情最多。


組合使用maven的命令

maven的編譯、清理、測試、打包以及部署這幾個命令可以同時組合起來使用,常用的命令組合有mvn clean compile,即先清理再編譯。
還有的就是mvn clean testmvn clean packagemvn clean install這些組合命令也都比較常用。


maven的生命週期

  1. maven的生命週期是什麼?
    maven的生命週期就是爲了對所有的構建過程進行抽象和統一,開發了一套高度完善的、易擴展的生命週期。這個生命週期包含了項目的清理、初始化、編譯、測試、打包、集成測試、驗證、部署和站點生成等幾乎所有構建步驟。換句話說,幾乎所有項目的構建,都能映射到這樣一個生命週期上。

  2. maven的生命週期
    maven對項目構建過程分爲三套相互獨立的生命週期,請注意這裏說的是"三套",而且是"相互獨立"的,這三套生命週期分別是:
    在這裏插入圖片描述
    比較常用的是:Clean Lifecycle(項目清理)、Default Lifecycle(默認構建)。
    重點:
    1、每套生命週期都由一組階段(Phase)組成,這些階段是有順序的,並且後面的階段依賴於前面的階段,我們平時在命令行輸入的命令總會對應於一個特定的階段。例如:mvn clean 這個clean對應於Clean Lifecycle的一個階段(Phase)。其實我們和Maven之間的交互就是通過調用這些生命週期的階段。
    2、生命週期中的階段是前後依賴的,但是這三套生命週期本身是相互獨立的。
    3、屬於同一個生命週期內的命令,當後面的命令執行時,前面的命令都會自動執行。


三套生命週期詳解

  1. Clean生命週期(Clean Lifecycle)
    Clean Lifecycle的目的是在進行真正的構建之前進行一些清理工作。Clean生命週期一共包含了三個階段:
    在這裏插入圖片描述
    maven命令mvn clean就是上面的clean階段。在一個生命週期中,運行某個階段的時候,它之前的所有階段都會被運行,也就是說,mvn clean等同於mvn pre-clean clean
  2. Default生命週期(Default Lifecycle)
    Default Lifecycle是構建的核心部分,包括編譯、測試、打包、部署等等,Default生命週期是maven生命週期中最重要的一個,絕大部分工作都發生在這個生命週期中。這裏,只介紹一些比較重要和常用的階段。
    在這裏插入圖片描述
    老調常談:執行任何一個階段,在它之前的所有階段都會被運行,這是Maven的機制,這也就是爲什麼我們運行mvn install時,代碼會被編譯、測試、打包的原因。此外,maven的插件機制是完全依賴maven的生命週期的,因此理解生命週期至關重要。
  3. Site生命週期(Site Lifecycle) 瞭解即可
    Site生命週期的目的是建立和發佈項目站點,maven能夠基於POM所包含的信息,自動生成一個友好的站點,方便團隊交流和發佈項目信息。該生命週期包含如下階段:
    在這裏插入圖片描述
    這裏經常用到的是site階段和site-deploy階段,用以生成和發佈項目站點,這可是maven相當強大的功能,可以自動生成文檔及統計數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章