1. 程式人生 > >【修真院JAVA小課堂】CLEAN,PACKAGE,INSTALL和DEPLOY的區別

【修真院JAVA小課堂】CLEAN,PACKAGE,INSTALL和DEPLOY的區別

大家好,我是IT修真院西安分院第02期學員,一枚正直善良的java程式設計師。
今天給大家分享一下,修真院官網java任務一中可能會使用到的知識點:
CLEAN,PACKAGE,INSTALL和DEPLOY的區別
1.背景介紹
maven的簡述:
(1)Maven是一個構建工具,服務與構建.使用Maven配置好專案後,輸入簡單的命令,如:mvn clean install,Maven會幫我們處理那些繁瑣的任務.
(2)Maven是跨平臺的(是純JAVA開發的)
(3)Maven最大化的消除了構建的重複.
(4)Maven可以幫助我們標準化構建過程.所有的專案都是簡單一致的,簡化了學習成本.
(5)Maven不僅是構建工具,他還是一個依賴管理工具和專案資訊管理工具.他還提供了中央倉庫,能幫我們自動下載構件.
即Maven對於專案目錄結構、測試用例命名方式等內容都有既定的規則,只要遵循了這些成熟的規則,使用者在專案間切換的時候就免去了額外的學習成本,可以說是約定優於配置(Convention Over Configuration)。
2.知識剖析
maven的生命週期
(1)maven的生命週期就是對所有構建過程抽象與統一。
(2)生命週期包含專案的清理、初始化、編譯、測試、打包、整合測試、驗證、部署、站點生成等幾乎所有的過程。
(3)maven有三套相互獨立的生命週期,而初學者一般都會將maven的生命週期看成一個整體。
<1>CleanLifecycle(清理生命週期): 在進行真正的構建之前進行一些清理工作
pre-clean:執行一些需要在clean之前完成的工作
clean:移除所有上一次構建生成的檔案
post-clean:執行一些需要在clean之後立刻完成的工作
<2>DefaultLifecycle(部署生命週期):構建的核心部分,編譯,測試,打包,部署等等。
compile:編譯專案的原始碼
test:使用合適的單元測試框架執行測試。
package:將編譯好的程式碼打包成可分發的格式,如JAR,WAR,或者EAR
install:安裝包至本地倉庫,以備本地的其它專案作為依賴使用
deploy:複製最終的包至遠端倉庫,共享給其它開發人員和專案
<3>SiteLifecycle(生成生命週期):生成專案報告,站點,釋出站點。
pre-site:執行一些需要在生成站點文件之前完成的工作
site:生成專案的站點文件
post-site:執行一些需要在生成站點文件之後完成的工作,並且為部署做準備
site-deploy:將生成的站點文件部署到特定的伺服器上
3.常見問題
(1)maven package install deploy區別
(2)mvn clean install 與 mvn install 的區別
4.解決方案
(1)問題一
maven package:打包(jar等)到本專案的target下
maven install:把target下打的包(jar等)安裝到本地倉庫,可以供其他專案使用
maven deploy:將打包的檔案釋出到遠端參考,提供其他人員進行下載依賴
(2)問題二
用mvn install後,新改的內容不生效,一定要後來使用mvn clean install 才生效。
maven在執行一個生命週期的命令的是時候將會執行之前的所有生命週期操作,比如執行mvn install,會執行前面一系列的動作包括 compile , package , test 等。而執行mvn package 會呼叫 maven-jar-plugin 這個外掛進行打包,理論上來講不做mvn clean得到的jar包應該是最新的,然而在打包結束後修改了程式碼內容,導致打出來的jar包沒有更新,從而沒有生效,所以使用mvn clean install對target檔案清除後再進行打包。
5.編碼實戰