eclipse maven build、maven clean、maven install和maven test的區別 精析


 
 

1.情景展示

  選中maven項目,右鍵-->Run As或Debug As-->maven buid,maven install,maven test有什么區別?

2.區別說明

  6 Maven  clean-->執行的是maven的原生命令:

mvn clean

  表示:刪除target目錄。

  原目錄結構存在target目錄

  執行該命令后, target目錄被刪除。

  2018/11/14

  選中target目錄-->右鍵-->刷新-->在windows資源管理器下打開該目錄,你會發現class已經重新編譯好

  注意:這不是mvn clean命令執行的只是清空target目錄,classes文件之所以重新被編譯,依賴於eclipse的自動編譯功能!  

  7 Maven generate-sources-->執行的是maven的原生命令:

mvn generate-sources

  表示:會根據pom配置去生成源代碼格式的包,產生應用需要的任何額外的源代碼(沒用過)

  8 Maven  install-->執行的是maven的原生命令:

mvn install

  表示:對項目進行編譯、將項目打成war包並且發布到本地倉庫。

  target目錄說明:

  classes目錄:.class,.properties,.xml文件;

  項目名目錄:項目所有源碼(前端、后台、jar包)

  項目名.war:將項目名目錄打成的war包。

  生成的target目錄展示

  安裝到本地倉庫的目錄展示

  9 Maven  test-->執行的是maven的原生命令:

mvn test

  表示的是:對項目進行編譯並執行測試代碼。  

  生成的目錄:

  5 Maven build...-->maven沒有mvn buid命令 

  表示的是:這是eclipse自帶的mvn插件,通過這個功能,你可以自定義設置要執行的maven命令。

  用這個功能,我們能干什么?

  舉2個栗子:

  案例一:

  因為maven在打包時,如果已經存在一個包時,再次執行打包命令時,如果不把原來的war包刪除,經常會導致包沒有更新;

  這時,我們就需要先清除該war包(執行clean命令對應eclipse中的Maven clean功能),再重新打包(執行package或install命令對應eclipse中的Maven install功能)。

  我們可以使用"Maven build"這個功能,在"Goals"一欄,輸入命令:clean install,執行一次即可。

  案例二:

  對項目進行打包的時候,跳過單元測試。

  eclipse沒有這個功能,只能通過自定義maven命令來實現,在Maven build...這個功能進行設置。

  示例一:打包並發布到本地倉庫

  錯誤用法:不設置命令,直接run

  相當於maven命令:

mvn

  報錯信息如下: 

  正確用法:輸入 install

 

  示例二:打包時,跳過單元測試

  方式一:在上圖勾選上“Skip Tests”

  使用這種方式:src/test/java和src/test/resources這兩個目錄下的文件不會被編譯,自然不會被添加到編譯好的項目當中。

  方式二:聲明maven命令:“-DskipTests”

  使用這種方式: src/test/java和src/test/resources這兩個目錄下的文件依然會被編譯,但不會被添加到編譯好的項目當中。

  4 Maven build

  表示的是:執行已經定義好的maven命令。

  一個項目可以“Maven build...”功能定義n個maven命令,然后通過“Maven build”功能來執行想要執行的命令。

  Run Configurations...

  可通過這個功能,對已經自定義的maven命令進行新建、修改、運行、刪除;

  如何刪除多余的maven命令?

  選中不需要的maven命令,右鍵-->“刪除”即可。

3.maven其它命令說明

mvn compile

  表示的是:對項目源代碼進行編譯。  

生成的目錄:

mvn deploy

  表示的是:將項目發布到遠程倉庫。

mvn dependency:tree

  表示的是:顯示maven依賴樹。

mvn dependency:list

  表示的是:顯示maven依賴列表。

mvn package

  表示的是:編譯項目並打成war包。

  跳過單元測試的兩種方式:

  方式一:

-DskipTests

  方式二:

-Dmaven.test.skip=true

  表示的是:測試類不會被編譯,或即使被編譯也不會被添加到項目當中。

  另外,這個指令沒有先后順序,均能正常執行。  

  舉例: 以打包並發布到本地倉庫時,跳過測試類為例。

// 方式一:形式一
mvn install -DskipTests
// 方式一:形式二
mvn -DskipTests install
// 方式二:形式一
mvn install -Dmaven.test.skip=true
// 方式二:形式二
mvn -Dmaven.test.skip=true install

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM