Mik*_*ike 5 java intellij-idea gradle
在开始我的应用程序之前,IDEA 需要很长的构建时间,这让我感到沮丧。我确实使用 DCEVM 比普通的热插拔更好地享受动态更改代码的乐趣,但是如果我确实需要多次启动我的应用程序,这将不起作用。
IDEA 应该能够进行增量编译,但我没有看到。我看不到启用此功能的选项。启动或启动应用程序的调试,需要将近半分钟。一定要花这么长时间吗?理论上,IDEA 已经生成了所有的类文件,除了刚刚编辑的源文件。IDEA 应该能够填补少数空白,并让应用程序几乎立即运行。有什么问题,为什么它坚持必须重新编译每个源文件?附:我在 IDEA 中使用 Eclipse 编译器,因此它可以容忍一些无法编译的源文件。我必须这样做,因为它是一棵巨大的 java 文件树,我无法控制每个文件。
然后我看到也许 Gradle 确实有增量编译。所以我想重新创建我的项目,这次是用 Gradle。我很难弄清楚它是如何工作的,它是如何集成的,哪些任务从 IDEA 转移到 Gradle(如果有)。即使在 IDEA 中使用 Gradle 创建一个简单的骨架测试应用程序也非常令人沮丧。到处都是各种模糊的东西,让你猜测。Jetbrains 上的教程几乎没用。我找不到一个清晰到可以简单地解释它是如何工作的。我看到一些演示说,点击这里、这里和那里,但我的结果与我看到的不一样。
例如,Gradle 抱怨它找不到 junit jar。好的,所以我进入项目设置,并尝试将 junit jar 添加到类路径。在库下,我会看到“Gradle: junit:junit:4.11”的条目。但是还有第二个:“junit-4.11”。为什么是两个?我可以删除一个吗?为什么这个是口头的,冒号这个冒号等等。所以我将我必须的junit jar文件添加到两者中。但随后在 Gradle Projects 窗口中,我看到了 gradle 项目设置的分层细分,验证->测试。然后应该运行我设法创建的测试类。
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all dependencies for configuration ':testCompileClasspath'.
> Could not resolve junit:junit:4.11.
Required by:
xpert_client4:xpert_client4:1.0-SNAPSHOT
> No cached version of junit:junit:4.11 available for offline mode.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Run Code Online (Sandbox Code Playgroud)
“无法解析 junit:junit:4.11”。
Gradle 非常令人沮丧。如果我所拥有的只是在一个大型项目中启动一个 main() ,为什么我会遇到使用这个提供我不需要的东西的 gradle 系统的麻烦?为什么它如此复杂、模糊和令人困惑?
Android 项目也是如此。IDEA 可以在没有 Gradle 的情况下编译和运行 Android 应用程序就好了。设置时只需避免任何 gradle,它就可以工作。
此外,还需要做很多事情来加速据说很慢的 Gradle 系统。有守护进程。并行化,显然你可以通过两种方式设置它(为什么)。按需配置。全球化。最小化。最小SDK版本。离线(哦,不,不是那个 Maven 的东西,一遍又一遍地从互联网上拉下 jar 文件)。j中心。配置文件....它继续下去。所有这些变通方法,黑客,调整,调整。对一个工作的 IDEA 项目进行分级有什么好处吗?如果我经历了所有这些麻烦,我会得到更快的构建和启动时间吗?我可以完全避免 Gradle,并且永远避免(希望它不会以某种方式成为强制性的)。
我从 80 年代开始编码。我用过各种系统。我已经建立了自己的构建系统。我这里不绿。我也讨厌 RTFM,如果那些 FM 没有切中要害,并且没有很好地解释事情——就好像那些写它的人自己并不真正理解它——他们知道按什么按钮来得到它去,就是这样。我发现这件事是我很长时间以来见过的最令人沮丧的事情之一。我过去尝试过的以前可怕的构建系统是 Maven。对这些系统缺乏清晰的思考令人震惊。
所以,除了这些挫折之外,我所追求的是:是否值得弄清楚 Gradle 并应用所有变通方法和调整,以便我可以在经历这种悲痛之后享受更快的构建和启动时间我的应用程序?
或者,我会更好,完全避免 Gradle,而是做一些事情,比如将我的应用程序的启动放在一个循环中,这样每次我退出应用程序时它都会重新运行 main()。然后我会在可能的情况下使用 DCEVM 即时编码。
最后忘了说。在 IDEA 中启用自动构建的效果非常糟糕。构建似乎总是涉及一遍又一遍地重新构建每个文件。并将构建设置为自动,它最终所做的就是在后台一遍又一遍地重做。没有任何事情以异步方式发生,当我完成编辑源文件并开始调试应用程序时,IDEA 提前在后台完成了任何构建,因为它在之后再次重做整个事情每一个微小的代码都发生了变化。此外,它使 CPU 不断飙升至接近 100%。IDEA 是一个很棒的 IDE,但是整个编译过程从头到尾都是一场噩梦。
确保在 Gradle 缓存目录和 IntelliJ 项目目录中禁用防病毒保护。对我来说,这极大地减少了 Java 编译时间,因为所有中间文件和 JAR 都与 Java 构建相关。从 Windows 搜索索引中排除这些相同的目录也会有所帮助。
截至 2020 年 9 月,这是应从病毒扫描和 Windows 搜索索引中排除的默认目录位置列表,发布于此处。
%USERPROFILE%\.gradle%USERPROFILE%\AndroidStudioProjects%USERPROFILE%\AppData\Local\Android\SDK%USERPROFILE%\.AndroidStudio<version>\system我在我的博客上发布了一些针对 Windows Defender 和 Windows Search Indexing 执行此操作的说明,为了完整起见,我将在此处重新发布这些说明:
Windows Defender - 如何排除目录
Windows 搜索索引 - 如何排除目录
| 归档时间: |
|
| 查看次数: |
6703 次 |
| 最近记录: |