Intellij构建时间太长。 Gradle没有帮助

时间:2016-11-04 18:59:05

标签: java intellij-idea gradle

我对开始申请之前IDEA需要的长构建时间感到沮丧。我确实使用DCEVM来享受更改代码,而不是普通的热插拔,但如果我确实需要多次启动我的应用程序,这不会起作用。

IDEA应该能够进行渐进式编译,但我没有看到它。我看不到启用此功能的选项。启动或启动应用程序的调试,需要将近半分钟。必须花这么长时间吗?理论上,IDEA已经生成了所有类文件,但编辑的源文件除外。 IDEA应该能够填补少数空白,并使应用程序几乎立即运行。什么是阻止,为什么它坚持它必须再次重新编译每个源文件? PS。我在IDEA中使用Eclipse编译器,因此它可以容忍某些源文件无法编译。我必须这样做,因为它是一个巨大的java文件树,我无法控制每一个。

然后我看到Gradle确实有增量编译。所以我想重新创建我的项目,这次是使用Gradle。我很难弄清楚它是如何工作的,它如何集成,什么任务从IDEA转移到Gradle(如果有的话)。即使在IDEA中使用Gradle创建一个简单的骨架测试应用程序也非常令人沮丧。各地都有各种各样的模糊比特让你猜测。关于Jetbrains的教程几乎没用。我无法找到一个明确的,只是简单地解释它是如何工作的。我看到一些演示说,点击这里,在这里,然后在那里,但我的结果与我看到的结果不一样。

例如,Gradle抱怨它无法找到junit jar。好的,我进入项目设置,并尝试将junit jar添加到类路径中。在Libraries下,我看到了一个条目" 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.

"无法解决junit:junit:4.11"。

Gradle非常令人沮丧。如果我必须拥有,就是在一个大项目中启动一个main(),为什么我会遇到使用这个提供我不需要的东西的gradle系统的麻烦?为什么它如此复杂,模糊和混乱?

Android项目也是如此。 IDEA可以在没有Gradle的情况下编译和运行Android应用程序。设置时只需避免任何gradle,它就可以正常工作。

此外,还有一些事情需要做,以加快所谓的慢速Gradle系统。有守护进程的东西。并行化,显然你可以用两种方式设置它(为什么)。按需配置。全球化。最小化。的minSdkVersion。离线(哦不,不是Maven的东西一遍又一遍地从互联网上下载jar文件)。 jCenter。简介......它一直在继续。所有这些变通办法,黑客攻击,调整,调整。 是否可以通过gradle-ifying一个正在运行的IDEA项目获得任何如果我遇到所有这些麻烦,我的构建和启动时间会更快吗?我可以完全避免Gradle,并且永远(希望它不会以某种方式成为强制性的)。

自80年代以来,我一直在编码。我使用过各种各样的系统。我已经构建了自己的构建系统。我不是绿色的。我也讨厌拥有RTFM,如果那些调频器没有达到目的,并且不能很好地解释事情 - 好像那些编写它的人,他们自己并不真正理解它们 - 他们知道什么按下按钮让它继续下去,这就是它。 我发现这件事是我很久以来见过的最令人沮丧的事情之一。我以前尝试过的以前可怕的构建系统,并且像Maven一样避免了瘟疫。这些系统缺乏清晰的思考令人震惊。

所以,除了这些挫折之外,我所追求的是:是否值得搞清楚Gradle并应用所有的变通方法和调整,以便我可以,一旦我经历这种悲痛,享受更快的构建和启动申请时间?

或者,我会更好,完全避免Gradle,而是做一些事情,比如将我的应用程序的启动放在一个循环中,这样每次我退出它重新运行main()的应用程序。然后,我会尽可能使用DCEVM进行编码。

最后,我忘了提及。在IDEA中启用自动构建非常糟糕。构建似乎总是涉及重复构建每个文件,一遍又一遍。并且将构建设置为自动,它最终完成的是它在后台重复执行此操作。没有任何事情以异步方式发生,当我完成源文件的编辑,并开始调试应用程序时,IDEA提前在后台完成了任何构建,因为它在重新完成整个事情之后再次重做每一个微小的代码都会改变。此外,它使CPU持续飙升至接近100%。 IDEA是一个很棒的IDE,但整个编译过程都是一场彻头彻尾的噩梦。

2 个答案:

答案 0 :(得分:0)

确保在您的Gradle缓存目录和IntelliJ项目目录中禁用防病毒保护。对我来说,由于与Java构建相关的所有中间文件和JAR,这大大减少了Java编译时间。从Windows搜索索引中排除那些相同的目录也可以提供帮助。

答案 1 :(得分:0)

即使我遇到了同样的问题,并在Intellij IDE中找到了一个选项,它可以很好地解决我的问题,但不能完全解决问题。

Build Project Automatically and Compile in Parallel

尽管它不能完全解决问题,但是每当我添加/升级​​依赖项并运行测试时,我都会在构建时间上看到一些性能改进。