【问题标题】:Incremental Gradle Build not saying UP-TO-DATE增量 Gradle 构建没有说 UP-TO-DATE
【发布时间】:2013-10-29 18:33:24
【问题描述】:

Gradle 是一个增量构建系统,应该检测何时没有对源或输出进行更改,并在适当的时候跳过任务以节省构建时间。

但是,在我的构建中,gradle 任务的后续执行,中间没有任何变化,这个增量功能不起作用。 compileJava、jar 等在每次构建时都会执行,而不是仅在进行更改时执行。

我们的构建非常复杂(从一个非常古老、非常混乱的 ant 构建切换到 gradle),所以我只展示一个小的 sn-p:

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

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

【问题讨论】:

    标签: java gradle build.gradle


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你需要做的两件事

      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

      【讨论】:

        猜你喜欢
        • 2011-11-09
        • 2015-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多