【发布时间】:2012-04-06 04:48:17
【问题描述】:
我目前正在为我的多模块 Web 应用程序从 ant 切换到 gradle,目前看来,当前版本的 Gradle (M9) 可能会超出其限制。但也许(希望)这只是我对 Gradle 的概念不够了解或不知道“神奇的性能提升开关”的问题。我很乐意提供有关如何优化构建性能的任何提示。
问题:在显示第一个 compileJava 之前几分钟过去了,即使源中没有任何变化,该进程也会运行至少 7 分钟,直到它在 :testClasses 中途崩溃(在不同的子项目中)以下消息:
* What went wrong:
Could not resolve all dependencies for configuration ':mysubproject_X:testRuntime'.
> Java heap space
该项目由大约 30 个(部分相互依赖的)子项目组成,它们的 build.gradle 或多或少相同,用于从每个子项目构建一个 jar 文件,例如
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 {
}
我试图通过将最大内存大小提高到 1024M 来解决堆空间问题,但它没有帮助。我的主要 build.gradle 文件如下所示:
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'
}
【问题讨论】:
-
你碰巧要替换令牌吗?我发现这是导致多项目 Gradle 构建速度慢一个数量级的原因,因为我们在 .gradle 缓存上进行令牌替换。
-
感谢您的建议。但是,没有涉及替换。 Peter Niederwieser 在下面的回答成功了:)
标签: performance gradle build heap-memory