【问题标题】:Eclipse settings for maven modulesMaven 模块的 Eclipse 设置
【发布时间】:2021-12-20 22:06:10
【问题描述】:

我将 maven 项目克隆到本地磁盘。该项目有3个模块以及一个父项目。我用 3 种颜色标记了 3 个模块——第四种,蓝色是项目本身。

该项目在 Eclipse 和命令行上的 maven 上运行良好。 当我在 Eclipse 上执行 mvn install 时,项目已构建并且所有测试都成功运行——我在 Eclipse 控制台上看到了 maven 的旧 BUILD SUCCESS 报告。

问题是——模块都搞砸了。 (这个“搞砸”是我现在可以说的最好的方式。)Eclipse 无法识别模块之间的依赖关系,并为一些使用外部依赖关系的代码提供检查错误。

在一个地方-- lombok @Getter 在一个类中使用。 import lombok.Getter; 被编译器看到——没有检查错误。但 Eclipse 无法识别 lombok 的 getter 声明,例如 getField() 字段 field。我知道这一点是因为:a) 在类本身中 - 发出警告 .. 未使用私有字段 field b) 为getField() 提供一个检查错误,来自另一个类的引用。 认为这可能是一个有趣的例子,说明依赖项如何“工作”。我猜 lombok 正在使用的一个依赖项在途中被截获以产生这种不一致。

以下是磁盘上的项目根目录结构。 (3种颜色为3个模块,为保密起见必须隐藏名称):

这3个模块在pom.xml中定义如下:

我在 Eclipse 项目资源管理器中看到以下内容:

所以在项目资源管理器中,具有 java 目录的 2 个模块/测试(绿色和黄色),即 src/main/java 出现两次。橙色模块只有src/main/resources,没有src/main/java

在项目资源管理器中第二次出现的模块(上图)中,没有任何类型的依赖关系,甚至没有 Java 本身,因此周围所有的红点(编译器错误)。第一次出现的模块有Referenced Libraries,没有Maven Dependencies

如何修复这个项目,以便我可以在 Eclipse 中编码和运行?只是为了确定——项目配置很好,它在 Maven 上成功运行。问题在于 Eclipse 自己的设置。

到目前为止,我尝试了以下方法:

  • 使项目多面化,并将 Java 作为唯一的方面添加
  • 导入为 Maven 项目 -- File > Import > Maven > Existing Maven Projects
  • 在其 pom.xml 上运行 mvn eclipse:eclipse

在这些之前甚至没有看到Build path

我会很感激你的帮助——让我筋疲力尽。
项目中的其他人都是 IntelliJ 开发人员——没有可比较的工作区。

我见过Importing Maven project into Eclipse 和其他一些有用的讨论。

我不确定是否应该发布 .project、.settings 和其他一些文件内容。 必要时会做。

TIA。

【问题讨论】:

  • 看起来你只导入了父 pom.xml。但是您还必须将模块作为项目导入 Eclipse。使用 File > Open Projects from File System... 或在 Git Repositories 视图中右键单击并 Import Projects... 来执行此操作一口气。
  • @howlger 你是对的 - 没有单独导入模块。现在做了 - 导入它们,然后导入项目本身,全部作为现有的 Maven 项目。事情发生了一些变化——现在看到了 Maven 依赖项。但我在 Q 中提到的 lombok 依赖项是原样
  • 你在 Eclipse 中安装了 Lombok 吗?
  • @howlger 不,它是从其父 pom 获取 lombok 的。其 pom.xml 上的依赖层次结构显示了相同 lombok(相同版本/包)的 3 个不同实例。这不是特定于龙目岛的问题。在像这样的另一个微服务中,它从 2+ 个地方获取 slf4j,这次来自 difft repos(ch.qos.logback 和 org.slfj4...)
  • 要在 Eclipse 中“识别 getter 声明”(例如,在编辑 Java 文件时,使用 Eclipse 的增量 Java 编译器)Lombok 必须安装到 Eclipse 中。在 Java 构建路径中拥有 Lombok 是不够的。见projectlombok.org/setup/eclipse

标签: java eclipse maven


【解决方案1】:

确保不仅导入pom.xml,而且将 Maven 模块作为项目导入 Eclipse。要一次性完成此操作,请使用

  • 文件 > 从文件系统打开项目...
  • Git Repositories 视图中右键单击根文件夹并选择 Import Projects...强>

还要确保 Lombok 已安装到 Eclipse 中,否则 Eclipse 自己的增量编译器不会生成例如由 Lombok 注释定义的 getter 和 setter 方法。请参阅Lombok documentation of how to install Lombok into Eclipse。如果您在导入项目后安装了 Lombok,则可能需要执行 Project > Clean... 或关闭并重新打开项目(通过右键菜单)。 p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 2016-12-18
    • 2011-05-16
    • 2012-02-02
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多