簡體   English   中英

maven-shade-plugin 報告:創建陰影 jar 時出錯:……目標/類(是一個目錄)

[英]maven-shade-plugin reports: Error creating shaded jar: …target/classes (Is a directory)

使用 m2eclipse 工具在 Eclipse 中為為Maven Shade Plugin配置的項目運行 Maven 構建時,構建失敗並顯示以下錯誤消息:

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]

我嘗試了不同版本的 Shade 插件並嘗試了不同的 Java 版本(6、7、8)。 都導致相同的錯誤。

解決方法:

此問題的解決方案提供了解決方法:如果選擇了選項Resolve Workspace Artifacts時,才會出現錯誤。 如果未選擇此選項,則構建運行良好。

(但是,這並不能解決問題,因為在啟用工作區分辨率的情況下構建項目通常非常有用)。

我發現了問題及其解決方案,如果您運行像mvn testmvn install這樣的單階段命令,則嘗試在單個命令(如mvn clean install -X test )中執行多個階段時,問題就開始了。 陰影插件存在問題。 這些是 apache 站點上的問題。 https://issues.apache.org/jira/browse/MSHADE-295https://issues.apache.org/jira/browse/MSHADE-215

根據問題,陰影插件不適用於多階段命令。 該插件使用 jar 名稱查找類而不是 jar 並失敗。

希望這對某人有幫助。

在啟用工作區分辨率的情況下構建項目通常非常有用

我曾經也這么認為……顯然,能夠從當前工作區中的另一個項目構建項目非常有用。 然而,我很快就進入了 Eclipse、m2eclipse 和 Maven 的噩夢。

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

這個 m2eclipse 魔法在某些情況下效果很好,但在其他情況下……它顯然失敗了(maven shade 插件就是一個例子)。 您是否還注意到默認情況下未激活“ Resolve Workspace Artifacts ”選項?

為了逃避噩夢,我發現始終從存儲庫中獲取我的項目依賴項很有用。 如果我的項目 A 依賴於我工作區中的另一個項目 B,我只需將 B 安裝在本地存儲庫中(右鍵單擊項目 B, Run as > Maven install 。僅此Maven install )。

我可以看到此解決方法的三個優點:

  • 不再做噩夢
  • 不涉及 m2eclipse 魔法
  • 完全標准和常規的Maven方式榮幸

您可以將這種方法視為一個小小的自由食客。 如果您仍然真的想要使用漂亮的選項Resolve Workspace Artifacts ,請將問題發送給 m2eclipse 團隊。 不要忘記准備一個重現問題的示例項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM