В настоящее время я разрабатываю несколько веб-приложений с использованием Spring. Я использую Maven для сборки и Git для контроля версий. В данный момент я пытаюсь найти способ разделить разработку некоторых вещей, используемых всеми веб-приложениями, например, У меня есть несколько вспомогательных классов, которые одинаковы для всех проектов. Проблема в том, что я не хочу использовать только классы, но также файлы ресурсов и какой-то родительский POM, хотя все еще независим от репозитория и могу извлечь выгоду из Git.
Хотя я не в восторге от изменения системы сборки, я не настоящий фанат Maven. Особенно концепция наследования и агрегации - вот что меня сейчас сдерживает. Может быть, плющ вариант?
Я бы хотел дать вам краткий обзор моих настроек:
Существует некоторый родительский проект, включающий некоторые классы, файлы конфигурации Spring и другие ресурсы, такие как шаблоны, изображения и таблицы стилей. Давайте назовем это base
. Это не полное весеннее веб-приложение, и оно не будет развернуто. Есть несколько других проектов, которые наследуют от base
и должны быть упакованы в WAR. Давайте назовем их webapp1
и webapp2
.
base
, webapp1
и webapp2
имеют свои собственные репозитории Git:
\
|
|- base.git (base's repository)
|
|- webapp1.git (webapp1's repository)
| \
| base (base used as a Git submodule)
|
|- webapp2.git (webapp2's repository)
\
base (base used as a Git submodule)
Я хочу иметь возможность изменять код base
s внутри веб-приложений с помощью подмодуля Git, а также иметь возможность создавать полнофункциональный WAR каждого веб-приложения, используя mvn package
в каталоге веб-приложения.
Maven parent
или module
не допускают такого динамического подхода. Я не нашел способа использовать module
подобным образом, и использование parent
для моих нужд является сложным и статичным: каждое изменение в base
потребовало бы загрузки новой версии в репозиторий, чтобы веб-приложение может наследовать от него.
Может быть, я не до конца понял наследство Мавена, но сейчас я довольно растерян.
Кто-нибудь добился чего-то подобного с успехом? Какую систему сборки вы использовали и как?