【问题标题】:Multi-module Maven project builds continuously in Eclipse多模块Maven项目在Eclipse中不断构建
【发布时间】:2021-04-09 13:28:46
【问题描述】:

我有许多多模块 Maven 项目,所有这些项目都是连续构建的。这是一个众所周知的问题,但建议的解决方案都没有帮助。

  • 关闭Project->Build AutomaticallyProject->Clean...
  • 检查.project 是否有多个maven2Builder 条目

项目结构是

parent
  +--model (jar)
  +--client (jar)
  +--restservice (war)

clientrestservice 都依赖于 model。这两个模块是连续构建的,但据我所知,它们不会导致 model 模块发生任何变化。

有什么方法可以查出是什么原因造成的吗?是否有任何跟踪可能表明触发器是什么?

更新

  • 我已经在终端中执行了父 POM,并且运行成功
  • Maven 工作区视图 显示所有模块都在持续构建中。父级没有execution,但有一个delta,其中列出了来自所有子模块的工件

更新

我在 github https://github.com/pramsden/openapiproblem 上创建了一个简单的示例,它演示了无限的构建循环问题。

【问题讨论】:

  • 我会尝试使用操作系统相关工具(Windows 上的进程监视器,Linux 上的 inotify-tools)检测文件系统级别的model 模块是否有任何更改。可能是 Eclipse 根本不是问题,而在后台运行的第三方程序导致了这个问题?
  • Maven Workspace Build 视图就是为此目的。
  • 从命令行构建是否有效?你能显示三个pom.xml 文件吗?
  • @howlger 你能告诉我如何使用Maven Workspace Build 视图来识别触发器吗? delta 中列出的文件是导致构建该项目的文件吗?
  • 是的,Maven Workspace Build 视图中显示的任何这些文件更改,包括触摸文件而不更改其内容,都会触发新的项目构建:eclipse.org/lists/m2e-users/msg04748.html按右上角的暂停按钮时问题仍然存在?

标签: java eclipse maven


【解决方案1】:

问题似乎是由模块中的 openapi 代码生成引起的。父级检测到更改并触发了重建。

我找到了这个答案 https://stackoverflow.com/a/64960032/11249 并将以下内容添加到父 POM:

<build>
    <pluginManagement>
        <plugins>
            <!-- prevents generated code from triggering a rebuild -->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <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>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

Maven 构建只执行一次,不再执行自动构建。

【讨论】:

    猜你喜欢
    • 2011-03-13
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2021-10-11
    • 1970-01-01
    • 2021-03-23
    相关资源
    最近更新 更多