我認爲,給出一個答案可能比寫評論更好。
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插件正在完成剩下的工作。很簡單,不是嗎?
是的。不要使用maven的eclipse插件。使用eclipse中的maven插件。意思是:不要在任何項目上運行'mvn eclipse:eclipse',而是在eclipse中將項目導入爲maven項目,讓M2E插件完成它的工作。 – Seelenvirtuose
任何maven項目的核心是'src'目錄和'pom.xml'。沒有其他的。 Eclipse在導入時會自行創建元數據文件和目錄('.project','.classpath','.settings /')。所以你可以先刪除它們。順便說一句:maven的eclipse插件也可以創建它們,但它們並不總是適合。 – Seelenvirtuose
@Seelenvirtuose感謝您的輸入。現在將刪除目錄並嘗試。 – Lucky