IDEA中對Maven項目做了相當好的支持,專門有個Maven的模塊用於進行項目的操作:
上圖紅框中的內容即開發者經常使用的操作,將英文簡單翻譯過來,其中文分別為Lifecycle(生命周期)、clean(清理)、validate(驗證)、compile(編譯)、test(測試)、package(打包)、verify(核實)、install(安裝)、site(設置)、deploy(部署),附Maven官網對於Maven項目默認生命周期的說明:
根據Maven的生命周期來說,以上的操作中:一個操作必然包含了其前面所有的步驟,換句話說,只有完成了前面的所有步驟,才能執行該操作
看起來比較多,但是對於日常的開發來說,常用操作不過二三,針對幾個常用的操作進行測試及說明:
以下分別從IDEA中對Maven項目進行的生命周期操作來觀察項目路徑下(編譯的target文件夾生成在項目路徑下,與src目錄同級),maven本地倉庫中的變化來得出結論
項目路徑:
本地倉庫:
clean-清理操作
變化
項目路徑下的 target
目錄已刪除,本地倉庫中如果存在之前已安裝的該項目包,不會刪除
結論
清理掉項目路徑下的 target
目錄(如果有的話)
compile-編譯操作
變化
在項目路徑下生成了 target
目錄
結論
在項目路徑下生成 target
目錄,但目錄中不包含生成的 jar 包或其他類型包
經測試,compile 操作之前不會先進行 clean 操作,通俗的說:compile 前,target 目錄已存在,compile 后,target 目錄中的文件不變或增加,但是不會少。
比如:compile 前 target 目錄已存在且 classes 目錄下存在 logs 日志文件目錄,本次 compile 前修改 pom.xml 中的配置,在
標簽中的 標簽中排除 logs 目錄,但是僅執行 compile 操作后,查看 target 目錄還是可以看到之前的 logs 目錄,可見並未進行 clean 操作。再測試執行 clean 后再執行 compile,就沒有 logs 目錄了
package-打包操作
變化
在項目路徑下生成了 target
目錄
結論
在項目路徑下生成 target
目錄,目錄中包含生成的 jar 包或其他類型包
install-安裝操作
變化
在 package 操作基礎上,執行 install 后,該項目被部署到了本地倉庫中
結論
install操作,將jar包或其他類型包安裝到本地倉庫中,可供本地其他項目進行引用依賴
deploy-部署操作
在 install 操作的基礎上,將項目生成的 jar 包或其他類型包部署到私服倉庫中
因未部署私服倉庫,所以暫未經過測試
clean 操作與其他生命周期不存在先后關系,生命周期的操作進行前都不會進行 clean 操作
推薦 package,install 操作前先進行 clean 操作,或在 Execute Maven Goal 框中輸入:mvn clean install,也是先清理后安裝的操作
maven 項目進行的生命周期的操作,都可以在 IDE 的控制台看到操作步驟或查看日志文件