Почему мой проект всегда пытается загрузить последнюю версию Spring-Bean 3.2.*.RELEASE артефакт
У меня есть веб-приложение Spring MVC, которое имеет следующие зависимости Spring:
spring-aop-3.2.1.RELEASE
spring-beans-3.2.1.RELEASE
spring-context-support-3.2.1.RELEASE
spring-context-3.2.1.RELEASE
spring-core-3.2.1.RELEASE
spring-expression-3.2.1.RELEASE
spring-jdbc-3.2.1.RELEASE
spring-jms-3.2.1.RELEASE
spring-orm-3.2.1.RELEASE
spring-test-3.2.1.RELEASE
spring-tx-3.2.1.RELEASE
spring-web-3.2.1.RELEASE
spring-webmvc-3.2.1.RELEASE
spring-aspects-3.2.1.RELEASE
spring-spring-security-core-3.2.0.RELEASE
spring-security-web-3.2.0.RELEASE
spring-security-config-3.2.0.RELEASE
spring-security-taglibs-3.2.0.RELEASE
Мой вопрос заключается в том, что при сборке с использованием mvn clean install он пытается загрузить spring-beans-3.2.10.RELEASE. Я предполагаю, что одна из моих зависимостей перетаскивает это, но не уверен, какая.
Любая помощь будет принята с благодарностью. Заранее спасибо.
2 ответа
Вы можете определить свои зависимости в <dependencyManagement>
раздел ПОМ. Версии, которые вы определяете в <dependencyManagement>
будет применяться не только к зависимостям, которые вы упоминаете в верхнем уровне <dependencies>
раздел, но и их переходные зависимости.
Например:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.2.1.RELEASE</version>
</dependency>
...
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
...
</dependencies>
Эти фрагменты будут гарантировать, что Maven использует только версию 3.2.1.RELEASE
, (Обратите внимание, что нет <version>
во втором разделе.)
Если вы все еще хотите узнать, откуда взялась эта зависимость, и если вы используете Eclipse, откройте pom.xml
и взглянуть на Dependency Hierarchy
Вкладка. При необходимости вы можете дважды щелкнуть там по зависимостям: откроется собственная зависимость pom.xml
где вы можете исследовать переходные зависимости дальше.
Вы можете решить свою проблему следующим образом:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.1.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependencies>
и тогда вы можете управлять своей зависимостью, не беспокоясь об одном номере версии. Таким образом, все зависимости Spring будут иметь одинаковую версию 4.1.0.BUILD-SNAPSHOT.