Недавно я работал над некоторыми улучшениями в проекте, разработанном некоторое время назад, и вот что я нашел. Множество зависимостей в pom файлах не имеют указанных версий, но они разрешены. Проект состоит из 1 корневого модуля и 2 подмодулей. Используется шаблон Aggregator, означающий, что в нем вообще отсутствует раздел dependencyManagement. Верхний проект просто объединяет 2 модуля и все это делает. Подпроекты не относятся к нему как к родителю. У них другой родитель. Чего я не могу понять, так это того, что ни сами подпроекты, ни их родительские объекты (на самом деле, они также не имеют зависимостей) не определяют версии для некоторых зависимостей. Например:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>imap</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
Может кто-нибудь помочь мне понять это? Maven обрабатывает управление версиями по какой-то стратегии по умолчанию? Что это за стратегия по умолчанию?