Запускать задачу gradle только в Windows

#gradle #operating-system #dependency-management #gradle-task

#gradle #операционная система #управление зависимостями #gradle-задача

Вопрос:

У меня есть какая-то задача:

 task foo {
    //Do something
}
foo.dependsOn(":bar:baz")
foo.dependsOn(":bar2:baz2")
 

Эта задача должна выполняться только в Windows. Я знаю, я мог бы сделать:

 import org.apache.tools.ant.taskdefs.condition.Os

task foo {
    if (!Os.isFamily(Os.FAMILY_WINDOWS)) {
        return;
    }
    ...
}
 

Но это все равно вызовет выполнение задач зависимостей (:bar:baz и:bar2:baz2).

Как я могу этого избежать?

Комментарии:

1. В принципе, вы могли бы добавить onlyIf { !Os.isFamily(Os.FAMILY_WINDOWS) } к задаче foo , но это все равно привело бы к выполнению baz и baz2 . Gradle такой. Вам также придется добавить onlyIf к задачам зависимостей.

2. Или вы объявляете зависимость только тогда, когда не в Windows.

3. Спасибо за ваш ответ, теперь я просто foo.dependsOn(...) превратил все строки в if(Os.isFamily(Os.FAMILY_WINDOWS)) {...} .