java - 为什么 gradlew build 命令不能仅编译和构建已更改的内容并使过程更快?

标签 java eclipse performance gradle buildship

eclipse下自动构建的功能比./gradlew构建快很多。

经过一番研究后我的发现是,它仅编译和构建更改的文件并将其替换到构建文件夹中。

那么为什么不能 ./gradlew build 命令编译和构建已更改的文件并将其替换到构建文件夹中,从而使整个构建过程更快。

我最近开始使用带有热插拔代理 + DCEVM 的自动构建功能。

最佳答案

Why can't gradlew build command compile and build only the things that have changed and make the process faster?

没有可靠的方法来确定哪些内容需要重新编译。例如,编译时常量被内联,并且在类文件中没有它们来自何处的痕迹(它可以在源文件中找到,这意味着解析它们并浪费时间;它可以存储在一些辅助文件和一些文件中)工具可以做到这一点)。

请参阅 this 的“限制”部分了解详情。

The reason maybe is that they don't go through configure step of gradle.

当然,但配置步骤通常不会花那么长时间。

Eclipse knows which files have changed

好点(holwgler 的评论)。

<小时/>

前一段时间,我花了一些时间试图让我的 gradle 编译更快,但我放弃了。 Eclipse 速度非常快,原因有很多:

  • 增量编译
  • 使用所有核心的多线程
  • 了解所有已更改的文件
  • 通过 JIT 优化整个编译器代码
  • 可能缓存文件依赖项
  • 丑陋的高度优化代码

我的“解决方案”是忽略这个问题。我在 Eclipse 中完成所有工作,除了集成测试(这比编译花费的时间要长)和生产构建(这种情况很少见,所以我不在乎)。

您可能想阅读这些performance tips .

<小时/>

要找出时间花在哪里,请使用

./gradlew clean; ./gradlew --profile jar

对我来说,90% 的时间只是 :compileJava

关于java - 为什么 gradlew build 命令不能仅编译和构建已更改的内容并使过程更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591451/

相关文章:

java - 在 TableView ScrollBar 上添加监听器

eclipse - 更好的 Eclipse 浏览器?

java - 弃用覆盖方法

java - 如何在 Eclipse 中使用 PMD Ant 从文件夹运行所有规则集?

java - 通过从模板编程创建 Excel 报告

java - Eclipse:保存服务器响应并在服务器(数据源)出现故障时返回它们

javascript - 替换多次出现的动态字符串?

mysql - Seek 有助于加快我的 mysql 查询

java - 如何通过 asyncTask 方法解析来自 2 个不同 URL 的数据

c++ - SSE42 & STTNI - PcmpEstrM 比 PcmpIstrM 慢两倍,这是真的吗?