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')
}
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
我的问题是,我可能会做些什么来阻止最新的检测无法正常工作?它可能与我复杂的构建路径有关吗?