2016-06-21 132 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