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

詳解myeclipse和maven的clean和build

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的提示框如下:
    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後再執行程式。

相關推薦

myeclipsemaven的cleanbuild

MyEclipse是一個被廣為使用的軟體,但是很多人用了很久,對它如何編譯,執行一個java工程卻沒有一個清楚的認識。比如, clean和build到底有什麼區別? 直接run主類之前用不用clean一下? 直接clean和maven clean是不是一樣的

POI操作Excel,讀取xlsxlsx格式的文件

shee xss split 類型 後綴 .sh lan xls lin package org.ian.webutil; import java.io.File; import java.io.FileInputStream; import java.io.FileN

跨域問題相關知識(原生jsjquery兩種方法實現jsonp跨域)

syn con 加載 developer 兩種方法 ray exe 編寫 分組 1、同源策略 同源策略(Same origin policy),它是由Netscape提出的一個著名的安全策略。同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽

(轉)Java JVM 工作原理流程

移植 獲得 代碼 適配 調用 tac 階段 main方法 等待 作為一名Java使用者,掌握JVM的體系結構也是必須的。說起Java,人們首先想到的是Java編程語言,然而事實上,Java是一種技術,它由四方面組成:Java編程語言、Java類文件格式、Java虛擬機和Ja

Java JVM 工作原理流程

str literal 狀態 應用 流程 href ctu 局部變量 自定義 作為一名Java使用者,掌握JVM的體系結構也是必須的。說起Java,人們首先想到的是Java編程語言,然而事實上,Java是一種技術,它由四方面組成:Java編程語言、Java類文件格式、Jav

MySQL基準測試sysbench工具

threads 組件 程序 原因 str 前言 全面 無法連接 不同 前言 作為一名後臺開發,對數據庫進行基準測試,以掌握數據庫的性能情況是非常必要的。本文介紹了MySQL基準測試的基本概念,以及使用sysbench對MySQL進行基準測試的詳細方法。 文章有疏漏之處,歡迎

MySQL基準測試sysbench工具(轉)

lua 增刪 後臺 simple ads 執行時間 bench 進行 響應 前言 作為一名後臺開發,對數據庫進行基準測試,以掌握數據庫的性能情況是非常必要的。本文介紹了MySQL基準測試的基本概念,以及使用sysbench對MySQL進行基準測試的詳細方法。 文章有疏漏

最大子段

最大 負數 nbsp 端點 關於 一段 描述 計數器 曾經 題目名稱:最大子段和 題目描述:給出一段序列,選出其中連續且非空的一段使得這段和最大。 輸入格式: 第一行是一個正整數N,表示了序列的長度。 第2行包含N個絕對值不大於10000的整數A[i],描述了這段序列。

java類型轉換(自動轉換強制轉換)

代碼 oid 高精 log 相加 println 類型轉換詳解 範圍 void 自動轉換 class Hello { public static void main(String[] args) { //自動轉換 int a = 5; byte b = 6

datetime 模塊 -- 基本的日期時間類型

日歷 cell max 5-0 .cn 賦值 RR 意義 struct 轉自:https://www.cnblogs.com/fclbky/articles/4098204.html datetime 模塊提供了各種類用於操作日期和時間,該模塊側重於高效率的格式化輸出在 P

如何在Centos6Centos7兩個版本上,執行Cobbler無人值守安裝!

信息 cgroup 內容 manager 外網 oar 關聯 done 足夠 Cobbler介紹: Cobbler是一個Linux服務器快速網絡安裝的服務,而且在經過調整也可以支持網絡安裝windows。該工具使用python開發,小巧輕便(才15k行python代碼),可

syslog、日誌服務器安裝、卸載、如何安裝卸載EventLog Analyzer

技術 src 如何 RoCE analyze sys ESS watermark 詳解 syslog、日誌服務器安裝、卸載詳解、如何安裝和卸載EventLog Analyzer

1U服務器2U服務器哪個更好?

體積 cto 發揮 使用 服務器 承擔 個數 最大 lar 機架式服務器的外形看來不像計算機,而像交換機,有1U(1U=1.75英寸)、2U、4U等規格。 在很多企業在選擇機架式服務器的時候都比較糾結的是,到底是選1U還是2U好呢? 現在我們就來詳細了解一下1U機架式服務

基於接口回調JUC中CallableFutureTask實現原理

cnblogs blog 異步編程 但是 迷糊 對象 extend href 增加 Callable接口和FutureTask實現類,是JUC(Java Util Concurrent)包中很重要的兩個技術實現,它們使獲取多線程運行結果成為可能。它們底層的實現,就是基於接口

一篇文章大資料技術應用場景

什麼是大資料 說起大資料,估計大家都覺得只聽過概念,但是具體是什麼東西,怎麼定義,沒有一個標準的東西,因為在我們的印象中好像很多公司都叫大資料公司,業務形態則有幾百種,感覺不是很好理解,所以我建議還是從字面上來理解大資料,在維克托邁爾-舍恩伯格及肯尼斯庫克耶編寫的《大資料時代》提到了大資料的4個特徵:

SELECT INTO INSERT INTO SELECT 兩種表複製語句(SQL資料庫Oracle資料庫的區別)

https://www.cnblogs.com/mq0036/p/4155136.html 我們經常會遇到需要表複製的情況,如將一個table1的資料的部分欄位複製到table2中,或者將整個table1複製到table2中,這時候我們就要使用SELECT INTO 和 INSER

TCP/IP--ICMP 控制報文差錯報文 Tracerouter 命令的過程

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

MySQL基準測試sysbench工具-轉載-(作者:程式設計迷思)

轉載地址:https://www.cnblogs.com/kismetv/archive/2017/09/30/7615738.html 參考:https://blog.csdn.net/oahz4699092zhao/article/details/53332105 一、基準測試簡介

#圖文:從實際理論出發,帶你瞭解Java中的多執行緒

這裡並沒有講什麼新東西,只是把多執行緒一些知識來個總結。大家懂得可以複習複習,還有些童鞋對多執行緒朦朧的可以拿這個做為入門~ 舉個栗子說明啥是多執行緒:玩遊戲,前面一堆怪,每個怪都是一個執行緒,你射了一槍,子彈飛出去了,這顆子彈也是一個執行緒。你開啟你的程序管理,看到你遊戲的後臺程序,這就是程序

Android SDK 目錄作用

Android SDK 目錄和作用的分析詳解 1、add-ons這裡面儲存著附加庫,比如GoogleMaps,當然你如果安裝了OphoneSDK,這裡也會有一些類庫在裡面。 2、docs這裡面是Android SDKAPI參考文件,所有的API都可以在這裡查到。 3、market_lic