【问题标题】:How do I stop the m2eclipse plugin interfering with command line mvn builds?如何停止干扰命令行 mvn 构建的 m2eclipse 插件?
【发布时间】:2010-12-23 10:20:04
【问题描述】:

我在 Eclipse 中使用 m2eclipse 插件,以便可以导入 Maven 项目。该插件读取 pom.xml 并以 Eclipse 友好的方式整理项目中的依赖项,因此我不会看到大量损坏的引用和错误。

我使用 Eclipse 进行代码开发,但是我通常从命令行构建项目,例如“mvn 全新安装”。

不幸的是,当我这样做时,m2eclipse 检测到磁盘活动并尝试重建工作区。这会干扰命令行构建,有时会导致竞争条件。例如,命令行可能处于其清理阶段,但由于它试图删除在工作区重建期间被锁定的文件或目录而失败。除了重建工作区的速度非常慢之外,在失败的构建和浪费的 CPU 之间,我的构建过程比应有的时间长 2-3 倍。

不使用 Eclipse(例如使用 Netbeans)或禁用 m2eclipse 不是一个选项。除了这种行为,它是一个有用的插件。

所以我的问题是,如何阻止 m2eclipse 一直重建工作区?我可以调用手动刷新并以其他方式禁用此行为吗?

【问题讨论】:

    标签: java eclipse m2eclipse


    【解决方案1】:

    作为一种快速修复,您可以停用自动 Eclipse 构建,取消勾选 Project > Build Automatically

    【讨论】:

    • 它不是在构建项目,而是在重建工作区。即它看到项目文件夹中的一些更改,m2eclipse 启动某种 mvn 构建以更新工作区以反映更改。
    • 这个选项实际上是针对整个工作区的。 Eclipse 中没有办法为每个项目自动构建:stackoverflow.com/questions/4333672/… 你试过了吗?
    • 禁用自动构建似乎已经做到了。我仍然看到状态栏显示正在重建工作区但实际调用似乎被阻止的光点。
    【解决方案2】:

    问题是 Eclipse 检测到已编译的资源已经消失并开始重建。

    您不需要执行mvn clean install,而是需要执行mvn install,因为您的所有资源都已经是最新的了。

    【讨论】:

    • 即使我执行“mvn install”,插件也会重建工作区
    • 嗯,这也取决于你的 pom。你能发帖吗?否则,您应该向 M2Eclipse 报告错误:issues.sonatype.org/browse/MNGECLIPSE
    【解决方案3】:

    除了dimitrisli所说的,我建议对eclipse和命令行使用不同的输出目录。

    您可以通过定义一个新的配置文件(例如“eclipse”)并在该配置文件中将输出目录设置为 <outputDirectory>${project.build.directory}/classes-eclipse</outputDirectory> 来做到这一点。

    这样,即使您并行构建(从 eclipse 和命令行),它们也不会相互干扰。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2014-10-23
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      相关资源
      最近更新 更多