gradle: агрегиране на многопроектен testReport с деактивиран тест

Искам да обобщя тестовите отчети на моята мултипроектна компилация. Имам структура на проект, в която съм деактивирал някои тестове. Вече разгледах примерния код на gradle, който работи добре с настройки по подразбиране, но веднага щом деактивирам тестовата задача на подпроект, той спира да работи. (Търси файла testresult/*.bin, който очевидно го няма..)

Оформлението на моя проект изглежда така:

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

ProjectA.gradle изглежда така:

test {
   enabled = false
}

В rootprojects build.gradle има задача testReport.

Както казах преди, задачата се проваля на ProjectA. Опитах се да модифицирам примерния код по следния начин:

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

Все още не работи, защото test.enabled е вярно, когато задачата се изпълнява.

Как мога да накарам тази задача да работи?


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


Отговори (1)


Той търси файла testresult/*.bin, който очевидно го няма

Вероятно си струва доклад за грешка на http://forums.gradle.org.

Все още не работи, защото test.enabled е вярно, когато задачата се изпълнява.

Всъщност е 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