На самом деле я не буду пытаться решить проблему вашего текущего подхода, а скорее расскажу о том, что я считаю лучшей практикой в этом случае.Не стесняйтесь принять его или нет:)
Прежде всего, обратите внимание, что RELEASE
(и LATEST
) - это специальное ключевое слово (не уверен, что вы это знаете), а RELEASE
- этокак-то неправильно здесь используется (родитель с версией, определенной как RELEASE
, на самом деле не имеет смысла).В любом случае, эти специальные ключевые слова были плохой идеей и устарели (я не уверен, что они поддерживаются в Maven3) ради воспроизводимости сборки, просто избегайте их использования.
Итак, используйте версию SNAPSHOT, есливместо этого проект находится в активной разработке, т.е. измените родительский элемент следующим образом:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.domain</groupId>
<artifactId>Parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Parent</name>
<modules>
<module>../Child1</module>
<module>../Child2</module>
<module>../Child3</module>
<module>../Child4</module>
<module>../Child5</module>
</modules>
</project>
Обратите внимание, что я удалил элемент dependencyManagement
, я не думаю, что он обеспечивает большую добавленную стоимость для internal зависимости многомодульной сборки и рекомендовать использовать встроенные свойства ${project.groupId}
и ${project.version}
вместо их объявления:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>Parent</artifactId>
<groupId>com.domain</groupId>
<version>1.0-SNAPSHOT</version><!-- must hard code this -->
</parent>
<!--groupId>com.domain</groupId--><!-- you can skip this, you inherit it -->
<artifactId>Child3</artifactId>
<packaging>war</packaging>
<name>Child3</name>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>Child1</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>Child2</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
Как я уже писал, я не думаю, что dependencyManagement
действительно полезен для внутренних зависимостей, и именно так я настраиваю свои проекты.Но вы можете, если хотите.Просто используйте свойства, чтобы не повторять информацию.