Я создаю родительский POM для нескольких модулей. Они используют Spring и Log4j2, поэтому я хочу определить соответствующую конфигурацию в разделе родительского POM и использовать новую функцию Spring BOM, чтобы избежать беспорядка с версиями компонентов Spring.
Согласно документации, это правильное использование Spring BOM:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
.......
</dependencyManagement>
Теперь мне нужно исключить зависимость от commons-logging
из spring-core
. Это правильный способ сделать это, согласно документы Spring:
<dependencyManagement>
.......
<!-- Remove JCL from Spring deps -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Add Log4j2 with JCL bridge -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>${log4j2.version}</version>
</dependency>
.......
</dependencyManagement>
Удаление номера версии из определения зависимости spring-core
вызывает ошибку отсутствия версии spring-core
на этапе компиляции ('dependencies.dependency.version' for org.springframework:spring-core:jar is missing
). По сути, это требует от меня повторного указания номера версии Spring - то, что Spring BOM должен был решить.
Знаете ли вы какой-либо способ заставить эту работу работать только на основе версии спецификации?
dependencyManagement
— я определяю версии зависимостей, а не объявляю их использование. - person Anton   schedule 23.08.2015