Създавам родителски 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
. Това е правилният начин да го направите, според Пролетни документи:
<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 трябваше да реши.
Знаете ли някакъв начин да накарате това да работи само въз основа на BOM версия?
dependencyManagement
- дефинирам версии на зависимости, а не декларирам тяхното използване. - person Anton   schedule 23.08.2015