Мы пытаемся переместить несколько мультимодульных приложений на maven и иметь некоторые проблемы.
Каждый модуль хранится независимо в cvs. У нас есть файлы манифеста для каждого приложения, в которых перечислены модули, необходимые для этого приложения (и, возможно, версия). Не все модули находятся в форме maven.
Итак, приложение customer_care имеет следующий манифест:
<manifest>
<module id="MY_api"/>
<module id="custcare_webapp"/>
</manifest>
Аналогично, приложение "core batch" имеет такой манифест:
<manifest>
<module id="MY_api"/>
<module id="core"/>
<module id="batch"/><!--NB this is a non-maven module -->
</manifest>
Я начал "mavenising" наш код, поэтому проект MY_api имеет pom.xml с определенными зависимостями, в том числе один на другом внутреннем модуле кода "central_config". Я указал версию RELEASE.
Проблема
Все это работает отлично, пока мне не нужно создать замороженный манифест. Я могу указать версию для каждого модуля:
<manifest>
<module id="MY_api" version="0.123.0"/>
<module id="core" version="0.456.0"/>
<module id="batch" version="0.789.0"/><!--NB this is a non-maven module -->
</manifest>
НО эта сборка не воспроизводится, потому что версия зависимости "centralconfig" в MY_api - "RELEASE". Поэтому, если кто-то выпускает новую версию "centralconfig", то в следующий раз мы создадим этот замороженный манифест, он отличается.
Итак, почему мы не используем жестко кодированные версии зависимостей, такие как central-config? Потому что тогда нам придется обновлять, возможно, 10 или 20 файлов pom каждый раз, когда кто-то обновляет centralconfig до новой версии. Все, что зависит от центральной конфигурации и всего, что от этого зависит, нуждается в обновлении pom.xml и будет повторно выпущено. Мало того, что это много работы, я не знаю, как я мог программно и надежно идентифицировать каждый модуль, который объявляет зависимость от центральной конфигурации.
Возможное решение?
Можно ли определить "centralconfig.version" в одном месте, а затем обратиться к нему во всех моих модулях? Если да, где я должен это делать? Я не очень разбираюсь в родительских позах, но я чувствую, что они могут предоставить решение.
Update
Кажется, что использование родительского помпа - путь. Но в соответствии с этим вопросом: Могут ли проекты maven иметь несколько родителей?, невозможно, чтобы у дочернего проекта maven было несколько родителей.
Итак, как может MY_api-модуль быть дочерним и custcare_webapp и core_batch?
Update
Я пришел к выводу, что maven не отвечает моим требованиям, и мы вернулись к использованию нашего 12-летнего домашнего решения с использованием ant и CVS.