2015-06-24 70 views
4

我最近開始開發一個Spring MVC maven項目。在運行配置運行mvn eclipse:eclipse命令之後,所有的Maven依賴關係都顯示在項目之外,而不是在「Maven Dependencies」層次結構視圖中顯示。當我將項目視角從Java EE切換到Java時,依賴關係可在Referenced Libararies下找到。Maven jar依賴關係顯示在`Maven Dependencies`視圖外

Screenshot

.project.classpath元數據文件的內容。

任何人都知道如何顯示Maven Dependencies視圖下的所有罐子?

+3

是的。不要使用maven的eclipse插件。使用eclipse中的maven插件。意思是:不要在任何項目上運行'mvn eclipse:eclipse',而是在eclipse中將項目導入爲maven項目,讓M2E插件完成它的工作。 – Seelenvirtuose

+1

任何maven項目的核心是'src'目錄和'pom.xml'。沒有其他的。 Eclipse在導入時會自行創建元數據文件和目錄('.project','.classpath','.settings /')。所以你可以先刪除它們。順便說一句:maven的eclipse插件也可以創建它們,但它們並不總是適合。 – Seelenvirtuose

+0

@Seelenvirtuose感謝您的輸入。現在將刪除目錄並嘗試。 – Lucky

回答

7

我認爲,給出一個答案可能比寫評論更好。

Maven的Eclipse插件

假設你有以下項目目錄:

/hello-world/ 
    +-- src/ 
    +-- pom.xml 

現在運行mvn eclipse:eclipse這個目錄裏面eclipsify它。這將創建一些元文件:

/hello-world/ 
    +-- src/ 
    +-- pom.xml 
    +-- .project 
    +-- .classpath 

.project文件將包含註釋行與聲明

NO_M2ECLIPSE_SUPPORT:在m2eclipse的不支持與Maven的Eclipse的插件創建的項目文件。

.classpath將有條目類似這樣的依存關係:

<classpathentry kind="var" path="M2_REPO/com/google/guava/guava/18.0/guava-18.0.jar" sourcepath="M2_REPO/com/google/guava/guava/18.0/guava-18.0-sources.jar"/> 
<classpathentry kind="var" path="M2_REPO/junit/junit/4.12/junit-4.12.jar" sourcepath="M2_REPO/junit/junit/4.12/junit-4.12-sources.jar"/> 
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar"/> 

注意,這些條目都使用一個Eclipse內部變量:M2_REPO,它指向你的本地倉庫。所有這些條目都是簡單的庫條目之後。與將庫添加到構建路徑時相同。

如果您現在通過「將現有項目導入到工作區」導入此項目,您將完全獲得所描述的項目。庫很簡單類路徑條目。而且 - 更重要的是,它沒有maven特性(它缺少小M圖標)。這在.project文件中提到過。沒有maven的本質,你對這個項目沒有一些有用的和重要的特性。

Eclipse的Maven插件

所以,讓我們修復。首先備份項目目錄(萬一出現錯誤)。

第一步是從eclipse中刪除項目,但不是從硬盤中刪除項目。所以只需在eclipse中刪除它,但不要打勾「刪除磁盤上的項目內容」。你仍然想要這個項目,不是嗎?

第2步:導航到項目目錄並刪除任何eclipse元文件(我已經告訴過你)。之後,您將擁有與最初情況相同的項目目錄。

第3步:現在您可以使用「現有Maven項目」將該項目導入到eclipse中。瀏覽到包含項目的目錄(可能是工作區目錄)並選擇您的項目。

之後你會注意到這個項目現在具有maven特性。項目圖標上有一個「M」圖標。此外,您將看到「Maven Dependencies」節點下的所有庫。

這是爲什麼?讓我們在元文件再看看:

.project文件現在還包含以下行(其中包括):

<buildCommand><name>org.eclipse.m2e.core.maven2Builder</name></buildCommand> 
<nature>org.eclipse.m2e.core.maven2Nature</nature> 

.classpath現在還具有以下條目:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> 
    <attributes> 
     <attribute name="maven.pomderived" value="true"/> 
    </attributes> 
</classpathentry> 

現在M2E插件正在完成剩下的工作。很簡單,不是嗎?

+0

哇!謝謝你解決了它。但我沒有任何.classpath文件在我的項目根目錄中。我只能找到'.project'文件和'.settings'目錄。不過,我按照您的建議刪除了它們,並將該項目導入爲現有Maven項目。但是在導入爲現有Maven項目之後,會創建'.classpath'文件。在我更新的答案中查看這些文件內容的pastebin鏈接 – Lucky

0

@Lucky閉日食。做一個eclipse:從命令提示符清理並導入項目爲Maven項目..(假設你已經在eclipse中安裝了Maven插件)。我認爲這將顯示它所需的方式。

+0

這裏唯一需要注意的是:'eclise:clean'刪除.project,.classpath文件,所以如果OP已經完成了任何使用這種方法刪除的定製。否則,這可能是最快的恢復方式。 – Gus