【问题标题】:Intellij Idea compiler recompiles already compiled projectIntellij Idea 编译器重新编译已经编译的项目
【发布时间】:2016-01-22 09:23:47
【问题描述】:

我使用 maven 命令来清理、构建整个项目、创建战争并部署到服务器。我不能使用 Intellij 来做到这一点,因为我只有社区版。它将项目构建在与 intellij 相同的目录中。

为了加快速度,我编写了一个脚本,该脚本在本地“目标”目录中查找编译文件,这些文件比服务器中的文件更新并复制它们。一切正常,但问题是 Intellij 没有看到使用 maven 编译的类,因为它应该跳过并重新构建整个项目。

目前它是这样工作的:

  1. 使用 maven 在终端中手动构建整个项目
  2. 返回 intellij -> 制作项目
  3. 全部重建
  4. 运行脚本 -> 交换所有文件

我想要达到的目标:

  1. 在终端中手动使用 maven 构建整个项目
  2. 返回 intellij。更改一个文件 -> 制作项目
  3. 只编译一个java文件
  4. 运行脚本 -> 它只交换一个 .class 文件

那么问题是如何让 intellij 将已经用外部工具编译的文件视为已编译?

【问题讨论】:

    标签: java maven intellij-idea


    【解决方案1】:

    你没有。 IntelliJ IDEA 有自己的增量编译系统,它跟踪正在编译的文件之间的依赖关系,并为每组更改重新编译最少的类集。使用 Maven 或 Gradle 等工具进行外部编译不会更新 IntelliJ IDEA 的增量编译数据库。因此,IntelliJ IDEA 无法识别已经使用外部工具编译的类这一事实,并将重新编译。

    【讨论】:

    • 如果IDEA自己的增量编译系统已经生成了所有的类文件,为什么不能使用那些已经生成的类文件来启动应用程序呢?为什么 Run 或 Debug 函数必须重新构建它的整个过程?我有一个应用程序需要 30 秒才能最终启动,这很烦人。我使用 dcevm 来帮助我将更改应用到正在运行的程序,但是对于我必须重新启动的程序,启动它们需要很长时间。是否有可能找到 .class 目录并将其添加到构建类路径中?
    • 再一次:运行或调试功能需要确保您的类是最新的,并且它无法识别类已经使用外部工具编译的事实。
    • 我不使用外部工具编译,像瘟疫一样将gradle和maven之类的东西作废。
    • 那么你面临的问题与问题的内容完全无关。
    • 问题是关于从命令行使用 Maven 时的重复编译。如果您使用的是 IDEA 的内置 make 功能,那么是的,它确实知道需要重新编译哪些文件,并且只重新编译这些文件。如果这对您不起作用,那么您应该联系支持团队或在此处询问其他问题以调查原因。但是,再一次,这不是最初的问题。
    【解决方案2】:

    这让我困扰了很久。最后,我找到了这个。 IDEA build settings 运行程序时可以选择使用 InteliJ 编译还是使用 gradle 编译。 gradle项目下,默认使用gradle构建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2012-07-16
      • 2013-09-16
      相关资源
      最近更新 更多