【问题标题】:Eclipse compilation error referencing a maven project that uses shadeEclipse 编译错误,引用了一个使用 shade 的 maven 项目
【发布时间】:2015-10-15 17:14:03
【问题描述】:

我有一个使用 Shade plugin 的 Maven 项目 A(第三方)。我有另一个依赖它的项目 B,它引用了一些阴影类。如果我打开了两个项目,则会出现编译错误,因为 Eclipse 找不到这些类,因为它们在 A/target/classes 中不存在。

我有什么好的方法来设置 Eclipse,以便 B 查看项目 A 的类的 .m2,而不仅仅是 A/target?

【问题讨论】:

  • 您是否尝试禁用 PropertiesMaven → [ ] Resolve dependencies from工作区项目?
  • @Gerold 这是个好主意。但是我对这个解决方案有疑问。我发现我的工作区中有大约 50 个项目都相互依赖,我不想在所有项目上禁用该功能。我想要么只禁用对项目 A 的工作区依赖(它位于依赖层次结构的底部),要么让项目 A 从工作区解析并回退到 .m2。 dev.eclipse.org/mhonarc/lists/m2e-users/msg03160.html 对此进行了很好的讨论。听起来这是 Eclipse 中的一个限制:(

标签: eclipse maven maven-shade-plugin


【解决方案1】:

使用scope provided 将 A 的阴影依赖项声明为 B 的直接依赖项应该可以解决问题:

范围:

提供 - 这很像编译,但表示您希望 JDK 或容器在运行时提供它。它仅在编译和测试类路径中可用,并且不可传递。

由于您有“大约 50 个项目”,因此引入新的 POM 继承级别可能是个好主意:

  • 您的顶级 POM
    • 项目A
      • 新的 POM 将阴影依赖项声明为 provided
        • 像 B 这样依赖于 A 的阴影依赖项的项目
    • 50 个灰色的 POM

【讨论】:

    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多