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/