Многопроектная сборка: выполнить функцию для каждого подпроекта - PullRequest
0 голосов
/ 14 октября 2019

У меня есть такая структура папок:

  • project / subproject1
  • project / subproject2
  • project / subproject3
  • project / build.gradle(корневая конфигурация)

Каждый подпроект имеет свою собственную конфигурацию build.gradle. У меня есть несколько тестов в подпроекте 1 и 3 (подпроект 2 не содержит тестов, я не уверен, требуется ли эта информация для моего вопроса).

Я использую JUnit5 в своих тестах. Чтобы выполнить их во время сборки проекта, я добавил это в каждый из моих build.gradle в своих подпроектах.

tasks.test {
    useJUnitPlatform()
}

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

Я пытался сделать документы из gradle-docs , но безуспешно.

Это то, что я пытаюсь сделатьдобавьте в мой корень build.gradle:

subprojects {
    tasks.test(){
        doLast {
            useJUnitPlatform()
        }
    }
}

Но он либо говорит, что 'test' уже определен, либо что-то вроде "Не удалось найти метод test () для аргументов [buildClosure] в наборе задач типаorg.gradle.api.internal.tasks.DefaultTaskContainer.

Любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 14 октября 2019

Установите следующее в project / build.gradle

subprojects {
   apply plugin : 'java'
   test.useJUnitPlatform()
}

Теперь тестовое задание настроено в корневом проекте для использования junit5 для всех его подпроектов. Обратите внимание, плагин 'Java' также применяется для подпроектов. Теперь любой подпроект предварительно настроен на уровне корневого проекта.

0 голосов
/ 14 октября 2019

Вы думали слишком сложно. Это легче. Просто добавьте

subprojects {
    test {
        useJUnitPlatform()
    }
}

в файл верхнего уровня build.gradle вашего проекта. Вы можете добавить (в основном) что угодно к этому блоку, что должно быть сделано в каждом подпроекте.

...