Почему мой проект всегда пытается загрузить последнюю версию 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.

Другие вопросы по тегам