У меня есть многомодульный проект, в котором каждый модуль нормально развертывается в Artifactory, пока я не добавлю плагин spring-cloud-contract-maven-plugin к одному из модулей (сервис, поскольку это API производителя).
Структура проекта такая:
parent
- common (shared DTOs)
- client
- service
Мы хотим удалить клиента и общее в будущем и иметь клиентов Feign в потребителях для уменьшения связи, и иметь базовый проект без внутренних модулей, но сейчас мы должны сохранить эту структуру.
Сначала я заметил, что заглушки не были отправлены в Artifactory, поэтому моим первоначальным решением было добавить это в конвейер Jenkins.
sh './mvnw clean deploy -U --projects=xxx-service'
Он развертывает службу и заглушки, но я заметил, что ни один из модулей не развертывается при выполнении этой команды:
sh './mvnw clean deploy -U'
Это конец вывода:
[INFO] Installing /xxx/xxx-service/target/xxx-service-1.7.0-SNAPSHOT.jar to /xxx/.m2/repository/xxx/xxx-service/1.7.0-SNAPSHOT/xxx-service-1.7.0-SNAPSHOT.jar
[INFO] Installing /xxx/xxx-service/pom.xml to /xxx/.m2/repository/xxx/xxx-service/1.7.0-SNAPSHOT/xxx-service-1.7.0-SNAPSHOT.pom
[INFO] Installing /xxx/xxx-service/target/xxx-service-1.7.0-SNAPSHOT-stubs.jar to /xxx/.m2/repository/xxx/xxx-service/1.7.0-SNAPSHOT/xxx-service-1.7.0-SNAPSHOT-stubs.jar
[INFO]
[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ xxx-service ---
[INFO] Deploying xxx:xxx-service:1.7.0-SNAPSHOT at end
Я попытался переместить всю конфигурацию Maven в родительский файл POM и сохранить контракты и базовые тестовые классы в служебном модуле. Я просмотрел эту страницу, который объясняет, как настроить плагин, и я увидел, что могу использовать контрактыDirectory, чтобы указать каталог файлов контрактов, gmavenplus-plugin, чтобы указать каталог сгенерированных тестов, и packageWithBaseClasses, чтобы указать пакет базовых классов. Однако я не вижу возможности указать каталог базовых классов. Я не могу переместить базовые тестовые классы в родительский, потому что они используют некоторые классы служебного модуля для создания макетов.
Есть ли способ сделать это или мне придется создавать отдельный проект для контрактов?
заранее спасибо