¿Cómo optimizar el rendimiento de construcción de Gradle con respecto a la duración de la construcción y el uso de RAM?

Actualmente estoy cambiando de hormiga a gradle para mi aplicación web de múltiples módulos y en este momento parece que la versión actual de Gradle (M9) podría estar corriendo por encima de sus límites. Pero tal vez (con suerte) es solo un problema de mí no entender los conceptos de Gradle lo suficientemente bueno o no saber el "interruptor de aumento de rendimiento mágico". Me alegraría cualquier pista sobre cómo se podría optimizar el rendimiento de la compilación.

Los problemas: pasan varios minutos antes de la primeracompileJavae muestra @, e incluso si nada ha cambiado en las fuentes, el proceso se ejecuta al menos 7 minutos hasta que se bloquea a mitad de:testClasses (en diferentes subproyectos) con el siguiente mensaje:

* What went wrong:
Could not resolve all dependencies for configuration ':mysubproject_X:testRuntime'.
> Java heap space

El proyecto consta de unos 30 subproyectos (parcialmente interdependientes), la construcción de ellos es más o menos la misma y se utilizan para construir un archivo jar de cada subproyecto, por ejemplo,

sourceSets {

    main {
        java {
            srcDirs 'src'
        }
    }
}

dependencies {

    compile project(':mysubproject_A')
    compile project(':mysubproject_B')
    compile project(':mysubproject_E')

    compile group: 'commons-lang', name: 'commons-lang', version: '2.2'

}

// copy all non-java files from src
copy {
    from sourceSets.main.java.srcDirs
    into "$buildDir/classes/main"
    exclude '**/*.java'
}

jar {
}

Traté de resolver el problema del espacio de almacenamiento dinámico aumentando el tamaño máximo de memoria a 1024M, pero no sirvió de nada. Mi archivo build.gradle principal se ve así:

            sourceCompatibility = 1.6
            version = 0.5

            useFindBugs = false

            apply plugin: 'java'

            configurations {
            }

            repositories {
                mavenCentral()
                mavenRepo url:"http://repository.jboss.org/maven2", artifactUrls: ["https://repository.jboss.org/nexus/content/repositories/public","http://opensource.55minutes.com/maven-releases"]
            }


            dependencies {
            }

            buildscript {
                repositories {
                    mavenRepo url: 'http://gradle.artifactoryonline.com/gradle/plugins'
                    flatDir(dirs: "$projectDir/lib")
                }

                dependencies {
                    classpath "org.gradle.plugins:gradle-idea-plugin:0.3.1"
                }
            }

            subprojects {
                apply plugin: 'java'
                apply plugin: 'idea'

                repositories {
                    mavenCentral()
                    mavenRepo url:"http://repository.jboss.org/maven2", artifactUrls: ["https://repository.jboss.org/nexus/content/repositories/public","http://opensource.55minutes.com/maven-releases"]
                }

                dependencies {
                    testCompile 'junit:junit:4.8.2'
                }

                compileJava {
                    options.encoding = 'UTF-8'
                    options.fork (memoryMaximumSize: '1024m') 
                }

                javadoc {
                    options.encoding = 'UTF-8'
                }

                test {
                    testReportDir = file(rootProject.testReportDir)
                    forkEvery = 1
                    jvmArgs = ['-ea', '-Xmx1024m']
                }
            }


            dependsOnChildren()

            task wrapper(type: Wrapper) {
                gradleVersion = '1.0-milestone-9'
            }

Respuestas a la pregunta(16)

Su respuesta a la pregunta