#jenkins #gradle #continuous-integration
#Дженкинс #исправьте #непрерывная интеграция
Вопрос:
Я пытаюсь развернуть наши проекты на Jenkins, но каждый компонент просто использует файл settings.gradle в корневом каталоге, даже если я добавил отдельный файл settings.gradle для каждого из них.
В настоящее время у меня есть такая структура.
- ROOT
- Пользовательский интерфейс
- отправить (включить settings.gradle и build.gradle в эту папку)
- порядок
- Качество
- обзор
- настройки.gradle
- build.gradle
- Пользовательский интерфейс
У меня есть include("ui:shipnotice")
в файле settings.gradle как для корневого каталога, так и для каталога ship.
У меня есть задача с именем copy, когда я попытался вызвать эту задачу в папке ship, мне нужно использовать ../../graldew —no-daemon —info copy
Я получил следующее Settings evaluated using settings file 'xxx/ui/shipnotice/settings.gradle.kts'.
Однако после того, как я развернул его с помощью Jenkins, все становится странным. В Jenkins он продолжает использовать файл settings.gradle в корневом каталоге.
Settings evaluated using settings file '/home/jenkins/workspace/xxx/settings.gradle.kts'.
FAILURE: Build failed with an exception.
* What went wrong:
Project directory '/home/jenkins/workspace/xxx/ui/shipnotice' is not part of the build defined by settings file '/home/jenkins/workspace/xxx/settings.gradle.kts'. If this is an unrelated build, it must have its own settings file.
Я попытался добавить rootProject.name = "shipnotice" include("ui:shipnotice")
, чтобы сделать shipnotice корневым проектом, но он все еще использует файл из root.
Кто-нибудь может дать мне некоторое представление об этой ошибке? Заранее спасибо!
Ответ №1:
Я бы рекомендовал избавиться от вложенных settings.gradle
. Это не рекомендуемая настройка.
Что, скорее всего, происходит в вашей сборке Jenkins, так это то, что папка, из которой выполняется команда Gradle, является корневой папкой проверки. И таким settings.gradle
образом, из этого корня извлекается.
Комментарии:
1. Спасибо, Луис. Я обнаружил, что в моем файле Jenkins я забыл использовать {env.workspace} в одном месте. После того, как я изменил его, он был решен. Тем не менее, мне интересно удалить эти избыточные файлы настроек. Я понимаю, что Gradle может найти подпроекты в том же каталоге. Однако, для случая компонента review, который находится в более глубоком каталоге. Как его можно найти без файла settings.gradle?