Tôi hiện đang chuyển từ ant sang gradle cho ứng dụng web đa mô-đun của mình và tại thời điểm này có vẻ như phiên bản Gradle hiện tại (M9) có thể đang chạy ngược với giới hạn của nó. Nhưng có lẽ (hy vọng) nó chỉ là một vấn đề của tôi không hiểu các khái niệm của Gradle đủ tốt hay không biết "chuyển đổi tăng cường hiệu suất ma thuật". Tôi muốn được hạnh phúc cho bất kỳ gợi ý về cách hiệu suất xây dựng có thể được tối ưu hóa.Làm thế nào để tối ưu hóa hiệu suất xây dựng gradle liên quan đến thời gian xây dựng và sử dụng RAM?
Các sự cố: vài phút trôi qua trước khi compileJava
được hiển thị và thậm chí nếu không có gì thay đổi trong nguồn, quá trình đang chạy ít nhất 7 phút cho đến khi nó bị treo nửa chừng :testClasses
(tại các tiểu dự án khác nhau) với thông báo sau : dự án
* What went wrong:
Could not resolve all dependencies for configuration ':mysubproject_X:testRuntime'.
> Java heap space
gồm khoảng 30 (một phần phụ thuộc lẫn nhau) tiểu dự án, các build.gradle trong số đó là nhiều hơn hoặc ít hơn như nhau và được sử dụng để xây dựng một file jar từ mỗi tiểu dự án, ví dụ:
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 {
}
Tôi đã cố gắng giải quyết vấn đề về không gian heap bằng cách tăng kích thước bộ nhớ tối đa lên 1024M nhưng không hiệu quả. Tệp build.gradle chính của tôi trông giống như sau:
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'
}
Bạn có xảy ra để được thay thế thẻ? Tôi đã tìm thấy điều này là một trong những điều mà gây ra đa dự án Gradle xây dựng được một thứ tự của cường độ chậm hơn bởi vì chúng tôi đã làm thay thế mã thông qua bộ nhớ cache .gradle. –
Cảm ơn đề xuất của bạn. Tuy nhiên, không có thay thế nào liên quan. Câu trả lời của Peter Niederwieser dưới đây đã thực hiện thủ thuật :) – peterp