Когда у вас есть многомодульный проект, и вы выполняете работу в нескольких модулях одновременно, это может быть утомительным и подверженным ошибкам, чтобы убедиться, что все необходимые зависимости обновлены.
В моей ситуации я бы хотел, чтобы моя система сборки обнаруживала изменения и собирала только те модули, которые необходимы. Один из способов сделать это с maven - это написать собственный плагин, который делает это, что не кажется непреодолимым, если есть уже доступные сложные плагины, такие как плагин выпуска maven.
Другие уже упоминали концепцию агрегации pom, которая повторяется и производит необходимые артефакты. Но иногда вы в конечном итоге строите больше, чем вам действительно нужно.
Профили Maven могут помочь, и вот хорошая статья на этот счет:
Использование агрегатных и родительских POM
Также обратите внимание в статье на концепцию пакетного помпа, о которой я раньше не знал.
Помните, что mvn clean install поместит ваш артефакт в локальный репозиторий. Таким образом, если модуль A зависит от модуля B, если в вашем локальном репо установлена последняя сборка модуля B, у вас все должно быть в порядке. Таким образом, если бы существовал внешний инструмент, который следил за изменениями в модуле B и автоматически собирал их, когда они были, и помещал эти изменения в локальное хранилище, тогда, когда модуль A был перестроен, он бы воспринял эти изменения. Существуют инструменты непрерывной интеграции (CI), которые могут сделать это, такие как Jenkins. Но вам потребуется локальная установка, чтобы эта работа работала напрямую с вашим локальным репо. Это все еще вариант, хотя.
Еще один вариант - для среды CI перенести ваши сборки на внешнее хранилище maven (или даже на то, которое вы настроили локально с помощью чего-то вроде Nexus). Затем вы настраиваете свои сборки CI так, чтобы вытащить их из этого места.
Итак, есть решения, которые полагаются на другие инструменты или потенциальные плагины, чтобы делать то, что вы хотите - зависит только от того, сколько времени и усилий вы хотите вложить, чтобы все это настроить. Но, как только вы преодолеете это препятствие, у вас будет система (и знания, и опыт), которую вы сможете использовать во всех своих проектах, не говоря уже о том, что вы будете знакомы с тем, как много магазинов / групп разработчиков работают.
Я бы порекомендовал исследовать непрерывную интеграцию и непрерывную доставку для получения дополнительной информации и идей.