12

我正在使用 Eclipse Mars 和 Maven (v 3.3)。当我在我的 pom 中更新依赖项(更改版本)时,我的 Eclipse-Maven 项目不会选择它,即使我右键单击我的项目并选择“Maven”->“更新项目”也是如此。我知道这一点是因为我在 Eclipse Java 编辑器中看不到编译错误,当我在命令行上构建项目时使用

mvn clean install

当我从工作区中删除项目并重新导入它时,事情就会恢复正常。然而,这是一个繁琐的过程。如何让我的 Maven-Eclipse 项目自动检测我的 pom 中的更改并适当地更新项目库?

是的,在“项目”菜单中,选中了“自动构建”。

4

5 回答 5

24

当您将项目导入 Eclipse 时,请使用 Eclipse 自己的内置 Maven 支持(又名 m2e)。我建议不要使用mvn eclipse:eclipse它,因为它不能给出最好的结果(如你所见)。Maven 是构建和依赖管理工具,而不是 IDE;在我看来,期望它管理特定于 IDE 的东西是愚蠢的(我意识到 Maven 团队的想法不同,Maven 应该负责管理您的 IDE,但这是无稽之谈)。

因此,如果您的系统上有可用的项目,请删除任何特定于 Eclipse 的文件(通常只是.classpath.project和 folder .settings),它们是由生成的mvn eclipse:eclipse并且您不希望它们干扰此处描述的“正确”导入过程。然后在 Eclipse 中,使用 File > Import > Maven > Existing Maven Projects 来导入项目。这应该会导致 Eclipse 和 maven 之间更好的集成,包括在 pom 更改时自动更新 Eclipse 构建路径。

作为快速检查,以这种方式导入后,您应该会在项目的构建路径的库选项卡中看到一个名为Maven 依赖项的组(在属性对话框中)。像这样:

在此处输入图像描述

如果您希望每次更改 pom 时自动更新 Eclipse 项目配置,则在Preferences > Maven下有一个(实验性)设置。但是请注意,这样做可能并不理想 - 正如此功能请求中所提到的,这是一个有点冗长的过程,涉及到 Eclipse 项目中的一堆东西;在每次pom.xml更改时自动执行此操作最终可能会带来比其价值更多的麻烦。

在此处输入图像描述

于 2016-03-17T15:14:43.623 回答
6

您应该为类路径中的自动更新执行三项强制性检查

  1. 您的存储库与您的 Eclipse IDE 不同步,请检查您的 IDE 中的以下设置。 外部 Maven
  2. 右键单击 IDE 中的任何 POM.xml 并检查应自动激活的 Maven 配置文件。也不应该启用脱机和强制更新复选框。请参考下图。自动激活
  3. 始终检查您的用户设置,该设置应反映您的本地 maven settings.xml,如下图所示。 在此处输入图像描述
  4. 执行所有这些检查后,刷新您的 Eclipse 工作区以反映这些更改。
于 2016-03-17T06:59:59.510 回答
0

Eclipse 应该正在更新您的类路径。如果不是,则意味着出现问题。

如果不了解您项目的 pom.xml 的更多信息,就很难说到底是什么问题。解决该问题可能需要更多信息,但我只会在黑暗中进行尝试:

打开项目根文件夹中的 .project 文件并检查那里的构建器和性质的顺序。项目中的某些其他性质也可能导致 maven2Nature 失败。将 maven nature 向上移动,看看是否有帮助。

或者,您可能会认为Eclipse 不会更新您的依赖项,因为它没有在项目中添加一些错误指示符,这些指示符应该与新的依赖项一起存在。如果是这种情况,请尝试清理当前项目(项目>清理...)。更新依赖项时,Eclipse 中的 Maven 不一定会触发完全重建。

如果这些都不起作用,关闭/打开项目可能比重新导入更快地解决问题。

于 2016-03-14T10:48:01.830 回答
0

你写的,应该有效。你检查了这个:

  • 终端的“纯”mvn install能看到你在 POM 中的变化吗?

  • 也许某些 Maybe 插件有问题,缓存了一些依赖项target,并且mvn clean install是需要的

  • 您可以在新的工作区中运行 Eclipse,并在那里导入您的项目,有时它会在出现此类奇怪问题时有所帮助

  • 而不是通过 将 Maven 项目导入 Eclipse m2eclipse,您可以尝试通过旧的创建 Eclipse 文件,mvn eclipse:eclipse然后看看会发生什么

  • 当您尝试将 Maven 项目导入其他 IDE(例如免费的 IntelliJ 社区版)时,它是否正常工作?

于 2016-03-18T16:16:02.177 回答
-3

作为最后的手段,您可以删除当前的 Eclipse 安装并安装新版本。当您添加多个插件时,它们可能会相互干扰并产生奇怪的行为。完成此操作后,不要将 Maven 项目导入工作区,而是创建一个新项目并复制并粘贴您拥有的文件。

于 2016-03-17T13:45:38.433 回答