7

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

我的问题是,我可能会做些什么来阻止最新的检测无法正常工作?它可能与我复杂的构建路径有关吗?

4

2 回答 2

10

当您使用 运行时--info,Gradle 会告诉您为什么任务不是最新的。

于 2013-10-29T22:23:33.603 回答
1

你需要做的两件事

  1. 检查您的 gradle 版本是否高于 2.1
  2. 有一种设置增量构建的方法:

    tasks.withType(JavaCompile) { options.incremental = true // one flag, and things will get MUCH faster }

参考在这里:https ://blog.gradle.org/incremental-compiler-avoidance

于 2017-05-10T00:12:54.257 回答