#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)) {...}
.