使用m2eclipse工具为Maven Shade Plugin配置的项目在eclipse中运行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)。所有这些都会导致同样的错误。
解决方法:
this question的解决方案提供了一种解决方法:仅在选择了Resolve Workspace Artifacts
选项时才会出现错误。如果未选择此选项,则构建运行正常。
(但是,这并不能解决问题,因为构建具有已启用工作区分辨率的项目通常非常有用。)
答案 0 :(得分:2)
构建具有已启用工作区分辨率的项目
通常非常有用
我曾经认为相同......显然,能够从位于当前工作空间的另一个项目构建项目非常有用。但是,我很快就用Eclipse,m2eclipse和Maven进入了一场噩梦。
一方面,Maven应该在存储库(本地,中央......)中找到项目依赖项。另一方面,m2eclipse“诱惑”Maven让它相信位于Eclipse工作区的项目是一个着名的Maven地方(即存储库)的依赖。
这种m2eclipse魔法在某些情况下效果很好但在其他情况下...它只是明显失败(maven shade插件就是一个例子)。您是否还注意到默认情况下未激活选项Resolve Workspace Artifacts
?
为了逃避这个问题,我发现总是从存储库中获取项目依赖项很有用。如果我的项目A依赖于我工作区中的另一个项目B,我只需在本地存储库中安装B(右键单击项目B,Run as
> Maven install
。这就是全部。
我可以看到这种解决方法的三个优点:
你可以把这种方法视为一个小自由的食客。如果您仍然想要使用漂亮的选项Resolve Workspace Artifacts
,请向m2eclipse团队发送一个问题。不要忘记准备一个重现问题的示例项目。
答案 1 :(得分:1)
我找到了问题及其解决方案,如果您运行像 mvn这样的单相命令,则尝试在单个命令如 mvn clean install -X test 中执行多个阶段时,问题就开始了测试或 MVN安装。阴影插件存在问题。这些是apache网站上的问题。 https://issues.apache.org/jira/browse/MSHADE-295和https://issues.apache.org/jira/browse/MSHADE-215。
根据问题,带阴影的插件无法与多阶段命令一起使用。插件使用jar的名称查找类而不是jar并失败。
希望这对某人有帮助。