2016-06-21 42 views
2

當在eclipse中使用m2eclipse工具運行一個Maven構建版本的配置爲Maven Shade Plugin的項目時,構建失敗與以下錯誤消息:maven-shade-plugin報告:創建着色jar時出錯:... target/classes(是一個目錄)

Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.4.3:shade (default) on project xxx: Error creating shaded jar: /.../project/target/classes (Is a directory) -> [Help 1]

我嘗試了不同版本的陰影插件和不同的Java版本(6,7,8)嘗試。所有導致相同的錯誤。

解決方法:

this question該解決方案提供一種解決方法:僅當選擇了選項Resolve Workspace Artifacts會出現錯誤。如果沒有選擇這個選項,構建運行正常。

(但是,這並不能解決問題,因爲通過啓用工作區解析來構建項目通常非常有用)。

+0

如果只是我可以...查看[在構建時自動安裝Maven項目在Eclipse中](http://stackoverflow.com/questions/35191737/automatic-install-of-maven-projects-in-eclipse-upon -build) – mxro

+0

下載Maven本身並從命令行執行它有什麼問題? – khmarbaise

+0

我的問題與前面的評論中提到的問題一樣。實質上,由於運行'mvn clean'使得eclipse不能用於構建,所以我使用禁用腳本來安裝構件,而是在開發期間依靠eclipse中的解決方案。 – mxro

回答

2

它往往是建立在啓用工作空間分辨率項目

我以前想的一樣......顯然是非常有用的,它是能夠從另一個右建項目非常有用項目位於當前工作區中。然而,我很快就用Eclipse,m2eclipse和Maven進入了一場噩夢。

一方面,Maven應該在存儲庫(本地,中央...)中找到項目依賴關係。另一方面,m2eclipse「引誘」Maven使其相信位於Eclipse工作區中的項目是衆所周知的Maven位置(即存儲庫)中的依賴項。

這個m2eclipse魔術在某些情況下效果很好,但在其他情況下效果很好......它只是明顯失敗(maven shade插件就是一個例子)。你是否還注意到選項Resolve Workspace Artifacts未被默認激活?

爲了逃避nigthmare,我發現它對總是有用從存儲庫中獲取我的項目依賴關係。如果我的項目A依賴於我的工作空間中的另一個項目B,我只需將B安裝在本地存儲庫中(右鍵單擊項目B,即Run as>Maven install。就這些了)。

我可以看到三個優點與此變通辦法:

  • 沒有更多的惡夢
  • 沒有m2eclipse的魔法參與
  • 完整的標準和傳統的Maven的方式兌現

你可以看到這種方法作爲一個小自由的食客。如果您仍然想要使用漂亮的選項Resolve Workspace Artifacts,請將問題發送給m2eclipse團隊。不要忘記準備一個重現問題的樣本項目。

+0

我同意這一建議。它具有許多優點,可以使用「乾淨」的方式並使用最新的本地或(更好的)遠程存儲庫。不幸的是,我遇到了另一個問題,它阻止我沿着這條路線走下去([問題#35191737](http://stackoverflow.com/questions/35191737/automatic-install-of-maven-projects-in-eclipse-upon -建立))。目前在eclipse中用Resolve Workspace Artifacts構建是我能想到的最好的... – mxro

+0

我會看看是否有人有解決方案,否則提交問題! – mxro