インクリメンタル ビルド システムである Gradle は、ソースまたは出力に変更が加えられていないことを検出し、必要に応じてタスクをスキップしてビルド時間を節約することになっています。
ただし、私のビルドでは、gradle タスクの後続の実行で、間に変更がないため、このインクリメンタル機能は機能していません。compileJava、jar などは、変更が加えられたときだけでなく、すべてのビルドで実行されます。
私たちのビルドは非常に複雑です (非常に古くて非常に厄介な ant ビルドから gradle に切り替えています) ので、小さなスニペットを表示します。
buildDir = 'build-server'
jar {
sourceSets.main.java.srcDirs = ['src',
'../otherProject/src']
sourceSets.main.java {
include 'com/ourCompany/pkgone/allocation/**'
include 'com/ourCompany/pkgone/authenticationmngr/**'
...
//Excludes from all VOBs
exclude 'com/ourCompany/pkgtwo/polling/**'
}
sourceSets.main.resources.srcDirs = ['cotsConfig/ejbconfig']
sourceSets.main.resources {
include 'META-INF/**'
}
}
dependencies {
compile project(':common')
}
このプロジェクトを 2 回続けて実行gradle jar
すると、次の出力が得られます。
P:\Project>gradlew jar
:common:compileJava
:common:processResources UP-TO-DATE
:common:classes
:common:jar
:clnt:compileJava
:clnt:processResources UP-TO-DATE
:clnt:classes
:clnt:jar
BUILD SUCCESSFUL
Total time: 1 mins 46.802 secs
P:\Project>gradlew jar
:common:compileJava
:common:processResources UP-TO-DATE
:common:classes
:common:jar
:clnt:compileJava
:clnt:processResources UP-TO-DATE
:clnt:classes
:clnt:jar
BUILD SUCCESSFUL
私の質問は、最新の検出が適切に機能しないようにするために何をしている可能性があるかということです。複雑なビルド パスに関連している可能性がありますか?