Gradle的构build过程非常缓慢,具有多项目结构

在包含大约140个项目/库的多项目设置上使用gradle进行构build时,构build时间花了1小时22分钟。 我正在使用 – --parallel 。 而我们的ANT构build需要不到20分钟,而没有平行build设。

这正是我所做的。

 ./gradlew clean ./gradlew build --parallel 

我做了一点testing,似乎德兴的时间最长。 有没有办法让gradle进程重新使用已经排好的东西? 如果这些库已经被创build,它应该重新使用已经存在的已定义的库。

我看到选项--no-rebuild ,但是当我运行这个选项它说下面

 File '/path/to/project/build/libs/project.aar' specified for property 'bundle' does not exist. 

我用普通的东西replace了文件path和项目名称。

使用Gradle 1.9-rc-3


更多信息(2014年1月15日):

preDexDebugpreDexRelease每个项目preDexRelease花了很长时间。 比任何其他任务长得多。


进展(2014年1月15日):

好吧,现在,我把preDexLibraries = false到所有的build.gradle文件。 但是,我仍然想知道一个集中的地方,我可以把这个条目,它影响所有其他build.gradle文件。

但是,现在dexReleasedexDebug花了很长时间。 有什么办法可以告诉构build只做dexDebugdexRelease并跳过另一个?


进展(2014年1月15日):

使用assembleDebug工作。 但是,它似乎还没有重新使用已经存在dexed的库。 因为德兴还在永远。 每个项目大约需要一分钟。 有没有办法让gradle重新使用已经存在dexed的库? 还是有一个不同的原因,为什么build设还需要一个小时? 我们的ANT过程不到15分钟。

做一个clean你实际上删除已经预定义的库。
正如在这个线程中所build议的那样,通过禁用预定义(因为在下一次构build中它们将被删除),可以节省一些时间在clean构build上:

 android { dexOptions { preDexLibraries = false } } 

根据这个post 。

现在每个项目都将自行预先configuration它的依赖关系。 这意味着依赖于同一个库的两个组件都将在该库的classes.jar上运行pre-dex,这是愚蠢的。 我们正在修复这个问题。

你有没有尝试设置Gradles编译器的参数?

如果您有远程依赖项,则每次运行项目时都将使用networking以远程资源运行。 您应该为Gradles编译器定义指令,让他使用以下离线工作:

 --offline 

在这里,我给你留下一个编译器设置的截图以获得更好的性能:

在这里输入图像说明

或者是什么…

在这里输入图像说明

资料来源: http : //gradle.org/docs/current/userguide/gradle_command_line.html