1. 程式人生 > >myeclipse和maven的clean和build

myeclipse和maven的clean和build

是把 自己 follow clean 結果 view cati 之前 app

轉:

詳解myeclipse和maven的clean和build

2018年04月20日 11:33:34 群星墜 閱讀數:3529 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_35603331/article/details/80002723

MyEclipse是一個被廣為使用的軟件,但是很多人用了很久,對它如何編譯,執行一個java工程卻沒有一個清楚的認識。比如,

  1. clean和build到底有什麽區別?
  2. 直接run主類之前用不用clean一下?
  3. 直接clean和maven clean是不是一樣的?
  4. 直接build和maven build,結果相同嗎?

另外,在遇到最棘手的問題:

錯誤: 找不到或無法加載主類

的時候,很容易陷入懵逼狀態。下面我結合我的一些實驗,簡單介紹下myeclipse的,clean,build,run,以及他們和maven clean,maven build的區別。

一.myeclipse的clean,build和run


首先,我們使用一個普通的maven工程作為例子。


  1. clean。作用很簡單,清空輸出目錄下的所有文件,每一個source folder都有一個自己的輸出目錄,也就是output
    folder。這個目錄可以在build path裏進行設置,一個標準maven工程中,src/main/java通常的輸出目錄是
    工程名/target/classes
  2. build。build的作用則是編譯,實際上就是把source fold下的所有文件轉移到相應的output folder, .java文件先編譯再轉移,其他文件直接轉移。在maven工程中,這個build其實相當於一次myeclipse自身的編譯,最後再利用maven提取一下資源文件。
  3. 其實兩者區別很明顯了,很多時候我們分不清他和clean的區別,是因為myeclipse提供了很多便利的機制。clean的提示框如下:
    技術分享圖片
    看到紅框了嗎,如果打勾,表示clean完畢之後立刻進行一次build,那看起來就和build沒什麽區別了。如果你把勾去掉,clean後去查看輸出目錄,就會發現輸出目錄被清空了。這裏就不進行截圖了。
    4.run。簡單來說就是找一個main方法,直接右鍵,run java application,相信大家都用過。這個run,實際上就是去
    工程名/target/classes

    這個目錄下去找class文件執行而已(如果不是maven工程,可能去工程名/classes下找),那麽沒有文件怎麽辦呢?如果你剛剛完成了clean,但是沒有build,那麽它會自動build一次。此外都會直接去找文件執行,如果找不到咋辦?
錯誤: 找不到或無法加載主類

二.maven的clean和build

  1. maven clean
    默認情況下直接刪除target文件夾。簡單直接。
  2. maven build
    按照maven規則進行編譯,和myeclipse無關,也就是說,不管你是不是設置了source folder,maven都按照他那一套進行編譯,具體規則大家可以找maven文章深入學習。
  3. maven的一些規則。maven的默認輸出文件夾也是
    工程名/target/classes,無論源代碼還是資源文件,根目錄都是這個文件夾,打包其實就相當於把這個文件夾打包而已。

三.總結


無論如何,build之前都應該clean,因為如果直接build,同名文件直接覆蓋,非同名文件會保留,這有可能給程序帶來未知的問題。如果myeclipse的輸出文件夾設置合理,那麽和maven build可能也不會出現什麽不同。但是,在使用maven的情況下,直接使用myeclipse內置的build功能仍然可能會和maven build產生不完全一致的效果,比如maven可能會忽視src/main/java文件夾內的資源文件,而myeclipse會保留。
嚴格來說,myeclipse內置的編譯功能,更多的是提供代碼提示和檢查功能,即使你完全不使用它,maven也可以正確編譯。(當然這樣你就享受不到代碼提示之類的的了)。
但可以確定的是,使用maven clean build總是可以生成最精確的結果,所以推薦先maven clean build後再運行程序。

myeclipse和maven的clean和build