Вы можете поместить все модули и родительский элемент в одну иерархию.Хороший подход, который я нашел, - это иметь папку для родителя, в которой будет pom.В этом модуле вам необходимо определить подмодули:
<modules>
<module>shared</module>
<module>common</module>
<module>dal</module>
<module>logic</module>
</modules>
Если все модули в одной иерархии папок, то вам нужно сделать что-то вроде:
<module>../shared</module>
В подмодулях, вам нужно установить версию родителя:
<parent>
<artifactId>Aggregation</artifactId>
<groupId>com.mycomm</groupId>
<version>3.0.2-SNAPSHOT</version>
</parent>
Чтобы иметь зависимость между каждым модулем в одном проекте:
<dependency>
<groupId>com.mycomm</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
Если вы измените pom родителя, вам также понадобитсяизменить все подмодули родительский пом.Вы можете использовать mvn-release-plugin. Пример:
mvn release:update-versions -DautoVersionSubmodules=true -DdevelopmentVersion=1.0.0.2-SNAPSHOT