【发布时间】:2020-03-19 18:04:39
【问题描述】:
我刚刚在 IntelliJ 中设置了一个基于 Maven 的 Spring Boot 项目(没有将命令委托给 Maven 本身),其中包含我打算在每次构建之前运行的 jOOQ 和 Flyway。通过命令行运行 mvn compile 会产生正确的行为,因为这两个插件都会将自己注册到正确的生命周期阶段。
但是,当像这样在 IntelliJ 中设置 Before Build 触发器时,我最终会出现意外行为:
通过菜单或菜单栏按钮调用构建过程时,编译器和代码生成都将启动并并行运行。结果是编译器抛出的错误会在片刻之后自动解决。 IntelliJ 内部的编译不会首先等待 Maven 进程完成。
是否有任何选项可以让 IntelliJ 的构建过程了解 Maven 进度?
【问题讨论】:
-
不确定,但您可能会成功将 Build Exection Deployment > Build Tools > Maven > Runner > Delegate IDE Build/run actions to Maven 设置为 true。尝试禁用“在后台运行”,同样的对话框。
-
我很确定这应该可以工作,但这样做我会失去一些 IntelliJ 在构建期间提供的缓存。我很好奇这种行为是否是一个错误总是这样,因为在编译的同时运行代码生成是没有意义的。
-
@Michael 我刚刚检查过 - 它按预期工作。但是,如前所述,我在 IntelliJs 编译过程以及响应能力方面失去了优化和缓存。即使禁用了选项在后台运行,单击构建命令也不会显示任何输出或进度指示器。
-
唯一的妥协是在 Maven 窗口中运行
compile生命周期 - 但是在调用调试会话时 IntelliJ 会第二次编译文件。 -
您的构建是否可以在普通命令行上运行?
标签: java maven intellij-idea