Comment optimiser gradle construire la performance en matière de construire de la durée et de l'utilisation de la RAM?

Je suis actuellement à la commutation de la fourmi à gradle pour mon multi module d'application web et au moment où il semble que la version actuelle de Gradle (M9) sera peut-être l'exécution de ses limites. Mais peut-être (je l'espère), c'est juste un problème de moi de ne pas comprendre les concepts de Gradle assez bon ou pas en sachant que la "magie de la performance boost switch". Je serais heureux de tout soupçon sur la façon dont la génération de performance pourrait être optimisée.

Les problèmes: plusieurs minutes s'écoulent avant que le premier compileJava est affiché, et même si rien n'a changé dans les sources, le processus est en cours d'exécution au moins 7 minutes jusqu'à ce qu'il se bloque à mi-chemin par le biais de :testClasses (à différents sous-projets) avec le message suivant:

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

Le projet se compose d'environ 30 (en partie interdépendants) des sous-projets, la construction.gradle d'entre eux étant plus ou moins la même chose et sont utilisés pour générer un fichier jar à partir de chaque sous-projet, par exemple

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 {
}

J'ai essayé de résoudre le tas de problème d'espace par ramping up max taille de la mémoire de 1024M, mais il n'a pas aidé. Mon principal construire.gradle fichier ressemble à ceci:

            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'
            }
  • Ne vous arrive de remplacer les jetons? J'ai trouvé que c'était la seule chose qui a causé le multi-projet Gradle construire un ordre de grandeur plus lent parce que nous faisions de jeton de remplacement au cours de la .gradle cache.
  • Merci pour votre suggestion. Cependant, il n'y avait pas de remplacements impliqués. Peter Niederwieser la réponse ci-dessous a fait l'affaire 🙂
InformationsquelleAutor peterp | 2012-03-21