【问题标题】:Eclipse loops endlessly: Invoking 'Maven Project Builder'Eclipse 无休止地循环:调用“Maven Project Builder”
【发布时间】:2011-11-14 01:17:31
【问题描述】:

啊!我的 Eclipse 陷入了死循环:

  • 此时没有可显示的操作
  • 焕然一新的工作空间建筑
  • 工作区。在 /MobileWebApp 上调用“Maven 项目构建器”

建筑工作空间永远不会超过 58%。

详情:

Google 的 GWT 提供了一个示例应用 MobileWebApp。他们suggest adding it to Eclipse 通过文件 > 导入 > 从 SCM 签出 Maven 项目。

我按照this blog 中的说明添加了 m2e、subclipse 和 m2e-subclipse 连接器的插件。

安装插件后,我通过 File > Import > Checkout Maven projects from SCM 和this URL 导入示例项目。

导入似乎完成,Eclipse 不显示任何标记。但是现在我有这种无尽的刷新和建设,但不知道是什么原因造成的,也不知道如何解决它。

版本:

  • Eclipse 靛蓝 3.7
  • m2e 1.0.100
  • m2e 连接器,用于 build-helper-maven-plugin 0.14
  • Subclipse 0.13 的 Maven SCM 处理程序
  • 子剪辑 1.6.18
  • Subclipse 客户端适配器 1.6.12

非常感谢任何建议。

【问题讨论】:

    标签: eclipse maven m2eclipse


    【解决方案1】:

    我打开了我的模块的.project 文件。有两个条目:

    <buildCommand>
      <name>org.maven.ide.eclipse.maven2Builder</name>
    </buildCommand>
    <buildCommand>
      <name>org.eclipse.m2e.core.maven2Builder</name>
    </buildCommand>
    

    我删除了org.eclipse.m2e.core.maven2Builder 条目,它神奇地解决了问题。

    【讨论】:

    • 我有 2 个性质:org.eclipse.m2e.core.maven2Nature 和 org.maven.ide.eclipse.maven2Nature。删除 org.maven.ide.eclipse.maven2Nature 神奇地为我解决了这个问题。
    • 帮我更新到氧气。
    【解决方案2】:

    我可以通过右键单击项目并选择 Run As > Maven Clean 来解决此问题

    【讨论】:

    • 谢谢你,这让我发疯了。我认为我的问题是 maven 的 jaxb 代码生成插件。当我添加生成的源目录时,这个问题就开始了。
    • 我还必须禁用自动构建项目才能执行我的 Maven Clean 命令。一旦我得到执行,再次打开自动构建,并进行 Maven 更新,我就重新开始工作了。谢谢你。
    • 此解决方案并非始终有效。如果您的项目依赖于其他 maven 库,您可能会遇到 maven 编译问题。
    【解决方案3】:

    我在与 GWT 无关的 Eclipse (Juno) Maven 项目中遇到了同样的问题 - 它只是不断刷新并“调用 Maven 项目构建器”。转到“进度”视图并请求取消任一进度条目(通过单击右侧的红色停止按钮)都没有帮助。

    构建者一直卡在的项目始终是相同的,并且在 eclipse 中的一组多 pom maven 项目中深入了几个级别。

    最终为我解决的只是进入该特定项目的Properties > Builders 并取消选中Maven Project Builder(但保持Java Builder 处于选中状态,以便在代码更改时它仍会自动构建)。我只是忽略了关于这是一个“高级操作”并且可能有“许多副作用”的警告 - 我认为它不会比不断的构建刷新周期更烦人。我仍然不确定这个循环的原因是什么,但这对我来说阻止了它。从那以后我没有遇到任何问题。

    【讨论】:

      【解决方案4】:

      我实际上解决了由 jaxb 插件引起的问题。如果 forceRegenerate 设置为 true,您将在 Eclipse 中获得构建循环(在我的情况下为 Kepler)。

      验证您已在 maven-jaxb-plugin 中将 forceRegenerate 设置为 false。

      <configuration>                                  
          <forceRegenerate>false</forceRegenerate>
      </configuration>
      

      【讨论】:

        【解决方案5】:

        M2e,即使在日食火星,似乎也喜欢无限的建筑。

        就我而言,没有如下所列的重复构建命令。 当项目树很大时,唯一可行的方法是:

        1. 打开日食
        2. 打开 Eclipse 后自动禁用构建
        3. 刷新工作区并手动触发 Crtl+B 或全部构建。
        4. 一旦 eclipse 对构建完整的项目树感到满意......最好有四核机器,否则您将等待一段时间,您可以很好地将构建自动选项激活。此后,Eclipse 似乎并没有大肆建设。它仍然会扫描一些文件夹一段时间,但是自动激活构建 - 一旦你以前构建过它 - 比新构建快得多,最后,eclipse变得稳定停止无限构建。

        否则,您将无法使用已弃用的 mvn eclipse:eclipse ... 并且必须放弃在 eclipse echosystem 中使用 maven 命令。 M2e 似乎很难与野兽合作。

        我仍然使用 m2e,但必须说吞下 m2e 比 netbeans 中的 maven 集成困难 100 倍。另一方面,对于非常大的代码库,eclipse 要快得多。选择你的毒药,你总是会被咬的。

         <?xml version="1.0" encoding="UTF-8"?>
            <projectDescription>
                <name>rootPom</name>
                <comment></comment>
                <projects>
                </projects>
                <buildSpec>
                    <buildCommand>
                        <name>org.eclipse.m2e.core.maven2Builder</name>
                        <arguments>
                        </arguments>
                    </buildCommand>
                </buildSpec>
                <natures>
                    <nature>org.eclipse.m2e.core.maven2Nature</nature>
                </natures>
            </projectDescription>
        

        【讨论】:

          【解决方案6】:

          问题可能是代码生成插件,如 openapi-generator-maven-plugin 或 protoc-jar-maven-plugin。此类插件正在生成重新触发 Eclipse 编译的代码。防止这种行为的解决方案可能是禁用 Eclipse“Maven Project Builder”的插件。这可以通过向 pom.xml 添加一个条目来完成,如下所述:https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html

          <pluginManagement>
              <plugins>
                  <plugin>
                      <groupId>org.eclipse.m2e</groupId>
                      <artifactId>lifecycle-mapping</artifactId>
                      <version>1.0.0</version>
                      <configuration>
                          <lifecycleMappingMetadata>
                              <pluginExecutions>
                                  <!-- Add plugin execution configuration here -->
                              </pluginExecutions>
                          </lifecycleMappingMetadata>
                      </configuration>
                  </plugin>
              </plugins>
          </pluginManagement>
          

          此类插件配置可能类似于以下示例:

          <pluginExecution>
            <pluginExecutionFilter>
              <groupId>org.openapitools</groupId>
              <artifactId>openapi-generator-maven-plugin</artifactId>
              <versionRange>[0.0,)</versionRange>
              <goals>
                <goal>generate</goal>
              </goals>
            </pluginExecutionFilter>
            <action>
              <ignore />
            </action>
          </pluginExecution>
          

          或者,可以为 Eclipse 工作区全局完成此类设置:Window > Preferences > Maven > Lifecycle Mappings。 可以在此处阅读有关此主题的更多信息:https://www.benchresources.net/eclipse-maven-plugin-execution-not-covered-by-lifecycle-configuration/

          【讨论】:

            【解决方案7】:

            这个问题通常也会出现在 maven 无法删除某些名称过长的文件时。因此,您可以手动转到目标文件夹并清理它并重新启动 eclipse。

            【讨论】:

              【解决方案8】:

              当我将 JAVA_HOME 更改为新位置时,它有时对我有用

              【讨论】:

                【解决方案9】:

                我做了类似于 Amos M. Carpenter 的回应 (https://stackoverflow.com/a/28713259/4470352)

                但我还使用以下配置创建了一个新的自定义构建器:

                1. 选择配置类型 -> 程序
                2. 位置(文本框)
                3. 工作目录(文本框)
                4. 参数(文本区域)

                这编译了我没有进度条的项目,但我可以在文本控制台中看到进度。

                就我而言,问题是每次编译该项目时,我都会下载 WSDL,并且需要提供代理配置。当 maven 项目构建器插件尝试编译我的项目时,失败并在循环中重新启动。

                我尝试将其设置到 settings.xml maven 配置文件中,但对我不起作用,并且在命令行中提供代理配置是可行的。

                因此,创建该自定义构建器可以完成这项工作,并且是一种新方法。

                希望对你有帮助。

                【讨论】:

                  【解决方案10】:
                  1. 我已经正确配置了 java 环境变量(即JAVA_HOME)。
                  2. 还将jdk路径添加到环境变量path,在我的例子中路径是C:\Program Files\Java\jdk1.8.0_101\bin
                  3. 我还在 Eclipse 的“已安装 JRE”首选项中添加了 JDK 主页的路径。

                  不确定哪一个解决了问题,我现在没有看到自动构建发生。

                  在此之后,我创建了一个新的 maven 项目。默认情况下设置为使用 1.7,这个项目也导致了无限循环。但是eclipse中没有配置1.7。更新项目属性以使用我的 Eclipse 中可用的 java 版本已经解决了这个问题。

                  【讨论】:

                    【解决方案11】:

                    每次我尝试更新 maven 项目时,我的工作站上的 Eclipse 都会挂起。即使在尝试了社区建议的许多解决方案/解决方法后,该问题也没有得到解决。唯一对我有用的是从命令提示符运行 mvn clean 和安装命令。我在任务管理器中结束任务,运行 mvn 命令,然后重新启动 eclipse。重新启动 eclipse 后运行 clean build 工作正常。

                    【讨论】:

                      【解决方案12】:

                      我在 eclipse 中链接了一些文件,但源文件丢失(同时被删除)。这导致 Eclipse 重新启动构建。删除断开的链接解决了问题。

                      【讨论】:

                        【解决方案13】:

                        从 Eclipse 中删除项目(不是从磁盘中)。 并导入为“General>Existing Projects into Workspace”

                        【讨论】:

                          【解决方案14】:

                          在我从 GitHub 克隆的一个项目将其结构更改为多模块 Maven 项目后,这发生在我身上。由于某些 Eclipse 特定文件位于 .gitignore 中,因此即使在我从 Eclipse 中删除旧项目并将其作为新项目重新导入子模块之后,执行 git pull 仍保留原件。这显然造成了一些混乱,导致了这个问题。

                          核对项目目录并重新克隆项目解决了该问题。

                          【讨论】:

                            【解决方案15】:

                            Eclipse -> 首选项 -> Maven -> 安装 删除额外的安装并使用 EMBEDDED 帮助了我。

                            触发因素是,我想有一个单独的 maven 设置 SLF4J:类路径包含多个 SLF4J 绑定。

                            【讨论】:

                              【解决方案16】:

                              就我而言,我正在使用前端插件处理运行节点的反应。如果节点正在运行,那么它会停留在 Invoking 'Maven Project Builder' 上。我关闭了节点并尽快完成了调用。在 Eclipse 中运行的节点实例正在创建问题。我正在使用 Windows,所以进入任务管理器我关闭了如图所示的节点实例,它工作正常。您可以检查 eclipse 下是否有任何导致问题的实例。

                              【讨论】:

                                【解决方案17】:

                                我打开了我的模块的.project 文件。有两个冗余条目,删除一个有帮助

                                <buildCommand>
                                    <name>org.eclipse.m2e.core.maven2Builder</name>
                                    <arguments>
                                    </arguments>
                                </buildCommand>
                                <buildCommand>
                                    <name>org.eclipse.m2e.core.maven2Builder</name>
                                    <arguments>
                                    </arguments>
                                </buildCommand>
                                

                                【讨论】:

                                  【解决方案18】:

                                  我遇到了同样的问题。事实证明,我正在使用管道 (|) 运算符运行 Eclipse,并行运行另一个进程。另一个进程阻塞了我的 Eclipse 线程。一旦我关闭了另一个进程,Eclipse 就可以正常工作了。

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 2020-01-24
                                    • 2013-01-19
                                    • 2014-06-17
                                    • 1970-01-01
                                    • 2016-02-09
                                    • 2013-02-01
                                    • 2012-03-07
                                    • 2021-12-30
                                    相关资源
                                    最近更新 更多