Attualmente sto passando da ant a gradle per la mia applicazione web multi modulo e al momento sembra che la versione corrente di Gradle (M9) stia correndo contro i suoi limiti. Ma forse (si spera) è solo un mio problema non capire i concetti di Gradle abbastanza bene o non conoscere il "magico interruttore di potenziamento delle prestazioni". Sarei felice per qualsiasi suggerimento su come ottimizzare le prestazioni della build.Come ottimizzare le prestazioni di build gradle per quanto riguarda la durata della build e l'utilizzo della RAM?
I problemi: alcuni minuti passano prima che venga visualizzato il primo compileJava
, e anche se nulla è cambiato nelle fonti, il processo è in esecuzione almeno 7 minuti fino a quando si blocca a metà strada attraverso :testClasses
(a sottoprogetti variabile) con il seguente messaggio :
* What went wrong:
Could not resolve all dependencies for configuration ':mysubproject_X:testRuntime'.
> Java heap space
il progetto consiste di circa 30 (in parte interdipendenti) sottoprogetti, il build.gradle dei quali è più o meno lo stesso e vengono utilizzati per creare un file jar da ogni sottoprogetto, es
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 {
}
Ho provato a risolvere il problema dello spazio dell'heap aumentando la dimensione massima della memoria a 1024 M, ma non è stato di aiuto. Il mio file build.gradle principale appare così:
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'
}
Ti capita di essere la sostituzione gettoni? Ho scoperto che questa è l'unica cosa che ha causato un aumento di Grado di un ordine di grandezza più lento perché stavamo sostituendo token con la cache .gradle. –
Grazie per il tuo suggerimento. Tuttavia, non ci sono state sostituzioni coinvolte. La risposta di Peter Niederwieser sotto ha fatto il trucco :) – peterp