mxr*_*xro 7 java eclipse m2eclipse maven maven-shade-plugin
使用 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。如果未选择此选项,则构建运行良好。
(但是,这并不能解决问题,因为在启用工作区分辨率的情况下构建项目通常非常有用)。
小智 6
我发现了问题及其解决方案,如果您运行像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 阴影插件就是一个例子)。您是否还注意到该选项Resolve Workspace Artifacts默认情况下未激活?
为了摆脱噩梦,我发现始终从存储库获取项目依赖项很有用。如果我的项目 A 依赖于工作区中的另一个项目 B,我只需将 B 安装在本地存储库中(右键单击项目 B,Run as> Maven install。仅此而已)。
我可以看到此解决方法的三个优点:
您可以将这种方法视为一种小自由食者。如果您仍然确实想要使用这个漂亮的选项Resolve Workspace Artifacts,请将问题发送给 m2eclipse 团队。不要忘记准备一个重现问题的示例项目。
| 归档时间: |
|
| 查看次数: |
8266 次 |
| 最近记录: |