IntelliJ 不会重新编译/构建 Maven 项目

Fgo*_*gop 3 java intellij-idea maven

我在使用 IntelliJ 进行 Spring 开发时遇到问题。起初,IntelliJbuild命令工作正常并接受我对源代码所做的更改。在某些时候,这会停止工作,我只能通过 Maven 编译我的源代码,因为buildorrebuild project命令似乎不再执行任何操作。

我很困惑,因为它在开始时按预期工作,但随后在某个时候停止工作。

重新创建的步骤

  • 使用 Spring Initializr 创建一个新的 Spring 项目:

    curl https://start.spring.io/starter.zip -d type=maven-project -d javaVersion=11 -o demo.zip && unzip demo.zip

  • 从该文件夹中的命令行启动 IntelliJ,这将自动导入项目:idea64 .

  • 在主类中写入日志消息并使用 运行项目Run->Run 'DemoApplication'。这会将源代码编译到target文件夹并启动项目。您应该看到日志消息

  • 更改日志消息,再次运行,更改应该可见(到目前为止一切顺利

  • 现在通过 maven 命令重新编译源mvn compile并重新启动 IntelliJ

  • 从现在开始,运行buildrebuild project在 IntelliJ 中运行将不会拾取我对任何源文件所做的任何更改。事实上,这两个命令似乎根本没有做任何事情。我必须通过 Maven 进行编译才能正确编译我的源代码

我尝试了一些方法来解决这个问题,但没有成功:

  • 缓存失效/重启
  • 检查并设置project settingsProject Compiler Output<project-folder>/target
  • 检查project settings/modules并放入上面output pathtest output path路径中
  • 用过的Reimport All Maven Projects
  • 删除了.idea项目文件夹中的文件夹。这似乎有效,但非常不方便,而且肯定不是预期的行为。如果我重新创建上面详细说明的步骤,它也会再次中断。

有人遇到类似的问题和/或有解决方案吗?

Fgo*_*gop 9

因此,对于遇到我上面描述的问题的任何人:

显然删除该.idea文件夹并重新启动 IntelliJ 确实可以解决问题。该文件夹在重新启动时重新创建,之后我可以在使用runbuild或在 IntelliJ 中进行编译rebuild project和通过 Maven 目标(mvn compilemvn testmvn surefire:test、 ...)进行编译之间进行切换。通过重新启动 IntelliJ,这种情况仍然存在,这样我就不必每次打开项目时都重复此操作。

我仍然不知道为什么会发生这种行为,但这是一个我很乐意使用的解决方案,只要我只需要时不时地为一个项目这样做。


jos*_*eph 6

听起来好像不想要 Intellij 的默认构建。您希望 Intellij 将构建命令转发到 mvn。我之所以这么认为,是因为您在问题中没有提到这一步。

这是显示如何启用它的屏幕截图:

将构建和重建委托给 mvn

更多详细信息请参阅 Intellij 文档https://www.jetbrains.com/help/idea/delegate-build-and-run-actions-to-maven.html#delegate_run_action