[英]How to include test classes in Jar created by maven-shade-plugin?
[英]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 test或mvn install這樣的單階段命令,則嘗試在單個命令(如mvn clean install -X test )中執行多個階段時,問題就開始了。 陰影插件存在問題。 這些是 apache 站點上的問題。 https://issues.apache.org/jira/browse/MSHADE-295和https://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
)。
我可以看到此解決方法的三個優點:
您可以將這種方法視為一個小小的自由食客。 如果您仍然真的想要使用漂亮的選項Resolve Workspace Artifacts
,請將問題發送給 m2eclipse 團隊。 不要忘記准備一個重現問題的示例項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.