Obecnie przełączam się z ant na gradle dla mojej aplikacji internetowej w wielu modułach iw tej chwili wydaje się, że obecna wersja Gradle (M9) może być uruchomiona wbrew jej ograniczeniom. Ale może (mam nadzieję) to tylko problem z niezrozumieniem pojęć Gradle'a lub nieznajomością "przełącznika zwiększania mocy magicznej". Byłbym szczęśliwy z jakiejkolwiek wskazówki, jak można zoptymalizować wydajność budowania.Jak zoptymalizować wydajność kompilacji gradów pod względem czasu budowy i użycia pamięci RAM?
Problemy: kilka minut upłynąć, zanim zostanie wyświetlona pierwsza compileJava
i nawet jeśli nic się nie zmieniło w źródłach, proces jest uruchomiony co najmniej 7 minut, aż się zawiesi w połowie :testClasses
(w różnych podprojektów) z następującym komunikatem :
* What went wrong:
Could not resolve all dependencies for configuration ':mysubproject_X:testRuntime'.
> Java heap space
projekt składa się z około 30 (częściowo współzależne) podprojektach The build.gradle z nich jest mniej więcej takie same i są używane do tworzenia pliku słoik z każdej podprojekcie np
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 {
}
starałem się rozwiązać ten problem przestrzeń sterty przez rozkręceniu maksymalny rozmiar pamięci do 1024M, ale to nie pomogło. Mój główny plik build.gradle wygląda następująco:
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'
}
Czy zdarzy ci się być zastępując znaki? Stwierdziłem, że jest to jedna z rzeczy, która spowodowała, że wieloprojektowy układ Gradle był wolniejszy o rząd wielkości, ponieważ zajmowaliśmy się zastępowaniem tokenów .gradle. –
Dzięki za sugestię. Nie było jednak żadnych wymian. Odpowiedź Petera Niederwiesera pomogła:) – peterp