2016-07-29 3 views
0

Здесь Вы можете найти init.gradle файл, который имеет общую задачу для всех моих проектов: -Gradle задача сценария инициализации не вызывается: Gradle 2.14.1

rootProject { apply plugin: "eclipse" } 

gradle.allprojects{ 
    ext.commonTaskForEveryBuild = { 
     println "Common task for every build starts here..." 
     println "Common task for every build ends here..." 
    } 
} 

найти также ниже образца build.gradle для одного из моих проект: -

apply plugin : 'java' 

clean.doFirst{ 
    println "Before invoking commonTaskForEveryBuild" 

    //This is invocation of commonTaskForEveryBuild 
    commonTaskForEveryBuild 

    println "After invoking commonTaskForEveryBuild" 
} 

Ниже приведены журналы для выполнения "чистой" Gradle задачи для файла образца build.gradle: -

: чистый

Перед вызовом commonTaskForEveryBuild

После вызова commonTaskForEveryBuild

: чистый UP-TO-DATE

BUILD SUCCESSFUL

Общее время: 3.722 сек

Похоже, чистый .doFirst называется, но это не ссылаясь на определение commonTaskForEveryBuild. Хотя, нет времени компиляции или ошибки времени выполнения. Пожалуйста, предложите.

ответ

1

Все в порядке, что ваша задача не вызывается, так как ваш скрипт не пытается это сделать, и это даже не задача. Вы просто получаете свой экземпляр commonTaskForEveryBuild, но ничего не делаете с ним.

Возможно, вам потребуется прочитать the official user guide, чтобы узнать, как вызвать одну задачу из другой. Короче говоря - это обычно делается с помощью зависимостей задач. Вы должны выполнить свою задачу clean в зависимости от задачи commonTaskForEveryBuild, чтобы выполнить ее перед выполнением задачи clean. Это может быть сделано следующим образом:

clean.dependsOn commonTaskForEveryBuild 

Кроме того, это все о задачах, но в вашем случае ext.commonTaskForEveryBuild = {...} даже не задача, а просто закрытие и он должен быть выполнен в виде commonTaskForEveryBuild()