2011-07-23 88 views
14

對不起,因爲詳細...eclipse中的Maven項目 - 部署程序集失敗構建

我有一些現有的Maven項目。我使用將它們導入到Eclipse中Maven - >導入現有的Maven項目。

這給了我6個人項目和一個項目,其中列出了所有6個項目。 (傘項目有6個模塊定義在它被轉換爲6 eclipse項目 - 據我瞭解maven是如何工作的)

其中一個項目A需要兩個其他項目B和C(在編譯時和運行時)。

構建路徑 - 在A的構建路徑上,我將其中一個庫作爲Maven依賴項。它構建得很好。

部署程序集 - 在A的部署程序集上,不存在部署到web-inf/lib的條目。因此,當tomcat啓動時,它找不到任何必需的jar或項目B和C.因此,我添加了一個入口部署程序集:source-maven和依賴項deploy-web-inf/lib。 Tomcat出現了,我的項目A的webapp出現了。

然而,這打破了Eclipse構建 - 在構建Eclipse抱怨: 「無效的類路徑中發佈不支持的出口項目項」

這是我看到的是因爲,在構建路徑,有新的條目添加到網頁-inf/lib在maven-dependencies下發布/導出。刪除也會從部署程序集中刪除Maven條目。

唯一的解決方法是在部署程序集中,我指定由maven生成的目標下的web-inf/lib,但會導致項目B和C的陳舊副本被撿起。

爲什麼我需要這個設置是因爲當我在Eclipse中對項目B和C進行更改並在Eclipse中構建它們時我想在調試項目A時看到更改。我不想運行Maven構建在B和C上耗費時間。

任何幫助,非常感謝。

我的確嘗試過,包括MAVEN2_CLASSPATH_CONTAINER,但它總是空的,當tomcat運行時它找不到必要的庫。 (順便說一句,MAVEN2_CLASSPATH_CONTATINER設置爲?)

這是在Eclipse Indigo Mac OSX上。

+0

是的,我想幫忙,但文本是不可讀的。 –

回答

1

對於其他任何人搜索這個,似乎你也可以手動添加以下.classpath文件

<classpathentry combineaccessrules="false" kind="src" path="/B"/> 
34

您需要將相關的項目添加到部署程序集。

右鍵點擊項目 - >屬性 - >部署大會 - >添加

+2

這比接受的答案要好得多。 – SoWeLie

+0

我同意這解決了發佈錯誤的解決方案,但它並不能解決我所遇到的錯誤,因爲該項目還在從常春藤拉入。 (「該項目包含具有相同存檔名稱的另一個依賴項」) – Marcus

+1

我今天也遇到了這個問題,但是我的部署程序集包含了這些子項目/模塊。首先解決這個問題,我刪除了所有的子項目/模塊,並再次將它們添加到部署程序集中 – PushkarT

5

想通了..但不完全...

所以我添加行家依賴在展開組件正如我所提到早。

Maven dependency -> WEB-INF/lib 

,另外添加B項目ç還有:

B -> WEB-INF/lib and C->WEB-INF/lib 

不知怎的,這樣B和C不被添加到Java構建路徑發佈/出口。我不知道eclipse如何知道不從Maven回購庫導出B和C,而是從項目B和C本身導出它。

反正多數民衆贊成其他一些天.. 現在我很高興:)

0

我有這個問題,但我相信這些答案都沒有正確解決問題。相反,他們解決方法m2eclipse(它應該爲你管理類路徑和部署程序集)。對我來說,我使用m2eclipse而沒有m2eclipse-wtp(一個單獨的插件)的問題。

有關插件詳細信息,請參閱this SO answer。 ( - >屬性 - >部署組裝項目)

然後檢查論文相關的項目都刻面兼容

0

如果使用Maven部署組件,您可以添加相關的項目/或Maven Java構建路徑條目。 (project - > Project Facets)

0

通過包含Maven Dependencies,您可以包括項目B和項目C的依賴項。事實證明,您還必須手動添加項目B和C.

確切的修復工程是。 項目A - >屬性 - >部署程序集

單擊添加,然後單擊項目。選擇B和C.重建後問題將得到修復。

7

我解決了剛這樣做:

右鍵點擊我的Eclipse項目 - >的Maven - >更新項目配置...

+1

更新項目配置實際上刪除了警告......但也從部署描述符中刪除項目條目:( –

+0

是的,你是對的,我還沒有解決方案 – Alv21

0

如果你在你的類相同的罐子多個條目,則會出現此錯誤路徑。所以你需要檢查你的類路徑並刪除重複的條目。