Grails:部署时间非常慢。 “解决依赖关系...”需要10秒以上

时间:2011-06-07 21:37:36

标签: performance grails dependencies

每次我对Grails应用程序进行微小更改时,部署它需要10-15秒。大部分时间都在'解决依赖关系'......

Welcome to Grails 1.3.7 - http://grails.org/
...
Resolving dependencies...
Dependencies resolved in 9868ms.

以下是我的设置的一些细节:

  • MacBook(OS X 10.5.8)2.4Ghz Core 2 Duo,4GB RAM +大量磁盘空间
  • SpringSource工具套件 - 版本:2.6.1.RELEASE Build ID:201105041000
  • Grails 1.3.7
  • 只有少数域模型的小型Grails项目
  • 只需几个插件:hibernate 1.3.7,邮件1.0,spring-security-core 1.1.3,spring-security-open id 1.0.2,spring-security-ui 0.1.2,webtest 3.0.1

已调查的地区:

  • 删除.ivy2目录并强制执行完整的外部刷新确实会将其缩短大约5秒钟。
  • 我的.ivy2目录位于我的本地计算机上,因此它不是this problem
  • 我确实遇到了一些与these类似的依赖问题,但我现在修复了它们,我没有收到任何错误。
  • 我通过在grails.project.dependency.resolution部分设置log“info”来改变BuildConfig.groovy中的登录。它似乎花费大部分时间“解析”依赖项而不是实际下载项目,所以我不认为mavenCentral或其他公共Maven存储库是一个问题。

从日志中提取......

resolution report  resolve 802ms  artifacts dl 86ms
resolution report resolve 8492ms  artifacts dl 150ms
Dependencies resolved in 9909ms.

额外信息: 通过部署我的意思是使用'run-app',通过重新部署我的意思是更改一个文件,迫使Grails自动执行'run-app'。我没有任何其他与网络相关的性能问题,并且拥有32MB的宽带,1MB的宽带互联网连接。

对于基准测试,过去我曾经使用过类似大小的应用程序,其中“Resolving Dependencies”花了大约1秒钟。这个设置是Grails 1.3.6,Shiro安全插件,一个类似的小项目,在Windows XP Service Pack 3机器上有几个域模型(Intel Core 2 Duo 2.2Ghz,2GB RAM)然后我使用的是NetBeans 6.9.1。 / p>

额外信息2 :附上完整的常春藤日志here


我每次更改的文件非常少,因此重新部署需要15秒时非常令人沮丧。

有没有人有关于如何减少“解决依赖关系......”所需时间的任何提示?

3 个答案:

答案 0 :(得分:3)

在评论中跟进我们的对话。

如果您确定问题不是您的网络,我知道减少依赖项解析时间的最佳方法是确保您没有任何快照依赖项。快照依赖项是活动开发中依赖项的版本,因此Ivy需要实际访问外部服务器以检查该快照的新版本是否可用。

我注意到你提到你正在使用webtest 3.0.1 gr ails插件。我知道这个插件取决于两个快照罐。因此,删除此插件应该可以缩短依赖项解析所需的时间。我不知道如何覆盖插件中指定的依赖项。在webtest插件的情况下,我不认为有一个版本的依赖项是可接受的,而不是指定的。你可以做的最好的事情是唠叨插件作者删除快照。

答案 1 :(得分:1)

刚刚发现(通过询问)您可以使用本地存储库来解析快照依赖项。这可能比通过网络更快:

Grails: working offline with snapshot dependencies

答案 2 :(得分:0)

请在此处查看我的回答。依赖于定义不明确的maven工件的插件可能会导致grails每次都看起来更新版本。

Grails very slow to resolve certain dependencies