当我更改 pom.xml 文件中的依赖项时,如何让我的 Eclipse-Maven 项目自动更新其类路径?
How do I get my Eclipse-Maven project to automatically update its classpath when I change a dependency in my pom.xml file?
我正在使用 Eclipse Mars 和 Maven (v 3.3)。当我更新我的 pom 中的依赖项(更改版本)时,我的 Eclipse-Maven 项目没有选择它,即使我右键单击我的项目,然后 select“Maven”->“更新项目”。我知道这一点是因为我在 Eclipse Java 编辑器中没有看到编译错误,当我在命令行上使用
构建项目时看到的
mvn clean install
当我从工作区中删除项目并重新导入它时,一切恢复正常。然而,这是一个麻烦的过程。如何让我的 Maven-Eclipse 项目自动检测我的 pom 中的变化并适当地更新项目库?
是的,在“项目”菜单中,选中了“自动构建”。
Eclipse 应该正在更新您的类路径。如果不是,则表示出现问题。
如果不进一步了解您项目的 pom.xml,很难说出问题到底是什么。解决问题可能需要更多信息,但我只是在黑暗中尝试一下:
打开项目根文件夹中的 .project 文件并检查那里的构建器和性质的顺序。项目中的某些其他性质也可能导致 maven2Nature 失败。将 maven nature 向上移动,看看是否有帮助。
或者您可能 认为 Eclipse 不会更新您的依赖项,因为它没有在项目中添加一些错误指示器,这些错误指示器应该与新的依赖项一起存在。如果是这种情况,请尝试清理当前项目(项目>清理...)。 Eclipse 中的 Maven 在更新依赖项时不一定会触发完全重建。
如果 none 有效,closing/opening 项目可能比重新导入更快地解决问题。
您应该在类路径中进行自动更新的三项强制检查
- 您的存储库未 in-sync 与您的 Eclipse IDE,请检查您的 IDE 中的以下设置。
- 右键单击 IDE 中的任何 POM.xml 并检查应该是 auto-activated 的 Maven 配置文件。此外,不应启用离线和强制更新复选框。请参考下图。
- 始终检查您的用户设置,它应该反映您的本地 maven settings.xml,如下图所示。
- 执行所有这些检查后,刷新 Eclipse Work-space 以反映这些更改。
作为最后的手段,您可以删除当前的 Eclipse 安装并安装新版本。当您添加多个插件时,它们可能会相互干扰并产生奇怪的行为。在你这样做之后,不要将你的 Maven 项目导入你的工作区,而是创建一个新项目并复制并粘贴你拥有的文件。
将项目导入 Eclipse 时,使用 Eclipse 自己的内置 Maven 支持(又名 m2e)。我建议不要使用 mvn eclipse:eclipse
,因为它不会提供最佳结果(如您所见)。 Maven 是一个构建和依赖管理工具,而不是 IDE;期望它管理 IDE-specific 的东西是愚蠢的,在我看来(我意识到 Maven 团队有不同的想法,Maven 应该负责管理你的 IDE,但那是无稽之谈)。
因此,如果您的系统上有可用的项目,请删除任何特定于 Eclipse 的文件(通常只是 .classpath
、.project
和文件夹 .settings
),它们是由mvn eclipse:eclipse
并且您不希望它们干扰此处描述的 "proper" 导入过程。然后在 Eclipse 中,使用 File > Import > Maven > Existing Maven Projects 导入项目。这应该会导致 Eclipse 和 Maven 之间更好的集成,包括在更改 pom 时自动更新 Eclipse 构建路径。
作为快速检查,以这种方式进行导入后,您应该在项目构建路径(在属性对话框中)的库选项卡中看到一个名为 Maven Dependencies 的组。像这样:
如果您希望每次更改 pom 时自动更新 Eclipse 项目配置,在 Preferences > Maven 下有一个(实验性的)设置。请注意,这样做可能并不可取 - 正如 this feature request 中所述,这是一个有点冗长的过程,涉及 Eclipse 项目中的一堆东西;在每次 pom.xml
更改时自动执行此操作最终可能会带来比其价值更多的麻烦。
你写的应该有用。你检查了吗:
"pure"mvn install
是否从终端看到您在 POM 中的更改?
可能某些 Maybe 插件有问题,在 target
中缓存了一些依赖项,并且需要 mvn clean install
你可以运行在一个新的工作区中使用 Eclipse,然后将你的项目导入到那里,有时它可以帮助解决这些奇怪的问题
而不是通过 m2eclipse
将 Maven 项目导入 Eclipse,您可以尝试通过旧 mvn eclipse:eclipse
创建 Eclipse 文件,然后看看会发生什么
当您尝试将您的 Maven 项目导入其他 IDE,例如免费的 IntelliJ 社区版时,它是否正常工作?
我正在使用 Eclipse Mars 和 Maven (v 3.3)。当我更新我的 pom 中的依赖项(更改版本)时,我的 Eclipse-Maven 项目没有选择它,即使我右键单击我的项目,然后 select“Maven”->“更新项目”。我知道这一点是因为我在 Eclipse Java 编辑器中没有看到编译错误,当我在命令行上使用
构建项目时看到的mvn clean install
当我从工作区中删除项目并重新导入它时,一切恢复正常。然而,这是一个麻烦的过程。如何让我的 Maven-Eclipse 项目自动检测我的 pom 中的变化并适当地更新项目库?
是的,在“项目”菜单中,选中了“自动构建”。
Eclipse 应该正在更新您的类路径。如果不是,则表示出现问题。
如果不进一步了解您项目的 pom.xml,很难说出问题到底是什么。解决问题可能需要更多信息,但我只是在黑暗中尝试一下:
打开项目根文件夹中的 .project 文件并检查那里的构建器和性质的顺序。项目中的某些其他性质也可能导致 maven2Nature 失败。将 maven nature 向上移动,看看是否有帮助。
或者您可能 认为 Eclipse 不会更新您的依赖项,因为它没有在项目中添加一些错误指示器,这些错误指示器应该与新的依赖项一起存在。如果是这种情况,请尝试清理当前项目(项目>清理...)。 Eclipse 中的 Maven 在更新依赖项时不一定会触发完全重建。
如果 none 有效,closing/opening 项目可能比重新导入更快地解决问题。
您应该在类路径中进行自动更新的三项强制检查
- 您的存储库未 in-sync 与您的 Eclipse IDE,请检查您的 IDE 中的以下设置。
- 右键单击 IDE 中的任何 POM.xml 并检查应该是 auto-activated 的 Maven 配置文件。此外,不应启用离线和强制更新复选框。请参考下图。
- 始终检查您的用户设置,它应该反映您的本地 maven settings.xml,如下图所示。
- 执行所有这些检查后,刷新 Eclipse Work-space 以反映这些更改。
作为最后的手段,您可以删除当前的 Eclipse 安装并安装新版本。当您添加多个插件时,它们可能会相互干扰并产生奇怪的行为。在你这样做之后,不要将你的 Maven 项目导入你的工作区,而是创建一个新项目并复制并粘贴你拥有的文件。
将项目导入 Eclipse 时,使用 Eclipse 自己的内置 Maven 支持(又名 m2e)。我建议不要使用 mvn eclipse:eclipse
,因为它不会提供最佳结果(如您所见)。 Maven 是一个构建和依赖管理工具,而不是 IDE;期望它管理 IDE-specific 的东西是愚蠢的,在我看来(我意识到 Maven 团队有不同的想法,Maven 应该负责管理你的 IDE,但那是无稽之谈)。
因此,如果您的系统上有可用的项目,请删除任何特定于 Eclipse 的文件(通常只是 .classpath
、.project
和文件夹 .settings
),它们是由mvn eclipse:eclipse
并且您不希望它们干扰此处描述的 "proper" 导入过程。然后在 Eclipse 中,使用 File > Import > Maven > Existing Maven Projects 导入项目。这应该会导致 Eclipse 和 Maven 之间更好的集成,包括在更改 pom 时自动更新 Eclipse 构建路径。
作为快速检查,以这种方式进行导入后,您应该在项目构建路径(在属性对话框中)的库选项卡中看到一个名为 Maven Dependencies 的组。像这样:
如果您希望每次更改 pom 时自动更新 Eclipse 项目配置,在 Preferences > Maven 下有一个(实验性的)设置。请注意,这样做可能并不可取 - 正如 this feature request 中所述,这是一个有点冗长的过程,涉及 Eclipse 项目中的一堆东西;在每次 pom.xml
更改时自动执行此操作最终可能会带来比其价值更多的麻烦。
你写的应该有用。你检查了吗:
"pure"
mvn install
是否从终端看到您在 POM 中的更改?可能某些 Maybe 插件有问题,在
target
中缓存了一些依赖项,并且需要mvn clean install
你可以运行在一个新的工作区中使用 Eclipse,然后将你的项目导入到那里,有时它可以帮助解决这些奇怪的问题
而不是通过
m2eclipse
将 Maven 项目导入 Eclipse,您可以尝试通过旧mvn eclipse:eclipse
创建 Eclipse 文件,然后看看会发生什么当您尝试将您的 Maven 项目导入其他 IDE,例如免费的 IntelliJ 社区版时,它是否正常工作?