Создайте каталог перед несколькими задачами Gradle - PullRequest
0 голосов
/ 06 октября 2018

У меня есть несколько задач, для которых требуется подкаталог build.

Каков наилучший способ достичь этого?

Пока у меня есть это:

afterEvaluate {
    mkdir "$buildDir/work"
}

И это:

task prepareDirs {
    mkdir "$buildDir/test"
}

Второй работает, потому что он запускается на этапе конфигурации, и поэтому я неНе нужно ставить зависящий от всех задач, которые требуют этого.

  • Есть ли другие варианты?
  • Является ли mkdir даже правильным способом сделать это?
  • В какой момент создается buildDir?Могу ли я расширить эту задачу?

РЕДАКТИРОВАТЬ: я заметил, что оба из них не удается, если я чередую чистую задачу в командной строке перед моими основными задачами.

1 Ответ

0 голосов
/ 07 октября 2018

Следующее должно работать.Обратите внимание, что prepareDirs должен иметь ограничение mustRunAfter clean, чтобы решить проблему, упомянутую в вашем EDIT

// task responsible to create the tmp/work dir
task prepareDirs {
    mustRunAfter clean
    doLast {
        mkdir "$buildDir/work"
    }
}

// make all tasks depend on the prepareDirs task
// exept 'clean' and 'prepareDirs' (avoid circular dependency)
tasks.each {
    if (it != prepareDirs && it != clean) {
        it.dependsOn prepareDirs
    }
}

Если у вас мало задач, для которых требуется build/work dir и вы не хотитечтобы все задачи зависели от вашей prepareDirs задачи, вы можете сделать это:

[myTask1, myTask2, myTask3].each {
    it.dependsOn prepareDirs
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...