gradle: агрегирование многопроектного testReport с отключенным тестом

Я хочу агрегировать тестовые отчеты в моей мультипроектной сборке. У меня есть структура проекта, в которой я отключил некоторые тесты. Я уже просмотрел пример кода gradle, который отлично работает. с настройками по умолчанию, но как только я отключаю тестовую задачу в подпроекте, она перестает работать. (Он ищет файл testresult/*.bin, которого там явно нет..)

Макет моего проекта выглядит так:

root 
 +--- ProjectA
 |    \--- ProjectA.gradle
 +--- ProjectB
 |    \--- ProjectB.gradle
 \--- build.gradle

ProjectA.gradle выглядит так:

test {
   enabled = false
}

В build.gradle rootprojects есть задача testReport.

Как я уже говорил, задача не выполняется в ProjectA. Я попытался изменить пример кода следующим образом:

task testReport(type: TestReport) {
    destinationDir = file("$buildDir/reports/allTests")
    reportOn subprojects*.test.findAll { test ->
        test.getEnabled()
    }
}

Все еще не работает, потому что test.enabled имеет значение true при выполнении задачи.

Как я могу заставить эту задачу работать?


person Csuki    schedule 10.06.2013    source источник


Ответы (1)


Он ищет файл testresult/*.bin, которого там явно нет.

Вероятно, стоит сообщить об ошибке на http://forums.gradle.org.

Все еще не работает, потому что test.enabled имеет значение true при выполнении задачи.

На самом деле это false, когда выполняется задача testReport, но это true, когда она настраивается. (У Gradle разные этапы настройки и выполнения.) Это связано с тем, что по умолчанию сценарии сборки родительского проекта оцениваются до сценариев сборки дочернего проекта. Один из способов решить эту проблему — переместить объявление задачи testReport в конец родительского скрипта сборки и добавить evaluationDependsOnChildren() непосредственно перед этим.

person Peter Niederwieser    schedule 11.06.2013
comment
Спасибо! Я создал тему об этом на форумах Gradle: forums.gradle.org/gradle/topics/< /а> - person Csuki; 12.06.2013