1

Spring 3.0.6から3.1にアップグレードしているところですが、Tomcatでの実行に問題があるようです。どうやらそれはSpring3.0.6の依存関係を持っており、起動時にそれを使おうとします。ただし、これは私のSpring3.1アプリと競合します。を介して展開しようとすると、これを取得します

mvn clean package tomcat:run

また、Tomcat 7で実行しようとした場合(Eclipseを介して、またはTomcat webappsフォルダーにコピーするだけで)

ここでの解決策は何ですか?Maven 3へのアップグレードは役に立ちますか?Maven Tomcatプラグインはどうですか?1.1はこれまでにリリースされていますが、バージョン2はまだ開発中のようです。誰かがTomcatプラグインの2.xバージョンを使用するpomセットアップを持っていますか?

(私の現在のエラーログは基本的にこれを示しています:

java.lang.NoClassDefFoundError: org/springframework/core/annotation/AnnotationAttributes

これは明らかにSpring3.1と3.0.xの間のバージョンの競合です)

私はこれにかなり迷い、モジュールの依存関係の混乱を一日中解決してモジュールを3.1にアップグレードしようとしていましたが、すべてのテストが実行され、Tomcatで実行できなくなりました。:(


編集:私の春の依存関係ツリー:

 module1:jar:1.0-SNAPSHOT:compile
 +- modul2:jar:1.0-SNAPSHOT:compile
 |  +- module3:jar:1.1-SNAPSHOT:compile
 |  |  +- org.springframework:spring-context:jar:3.1.1.RELEASE:compile
 |  |  +- org.springframework:spring-beans:jar:3.1.0.RELEASE:compile
 |  |  +- org.springframework:spring-aop:jar:3.1.0.RELEASE:compile
 |  |  +- org.springframework:spring-aspects:jar:3.1.0.RELEASE:compile
 |  |  +- org.springframework:spring-orm:jar:3.1.0.RELEASE:compile
 |  |  |  +- org.springframework:spring-jdbc:jar:3.1.0.RELEASE:compile
 |  |  |  \- org.springframework:spring-tx:jar:3.1.0.RELEASE:compile
 |  |  \- org.springframework:spring-core:jar:3.1.0.RELEASE:compile
 |  +- org.springframework:spring-webmvc:jar:3.1.0.RELEASE:compile
 |  |  +- org.springframework:spring-asm:jar:3.1.0.RELEASE:compile
 |  |  +- org.springframework:spring-context-support:jar:3.1.0.RELEASE:compile
 |  |  +- org.springframework:spring-expression:jar:3.1.0.RELEASE:compile
 |  |  \- org.springframework:spring-web:jar:3.1.0.RELEASE:compile
 |  \- org.springframework:spring-test:jar:3.1.0.RELEASE:compile
 \- org.springframework:spring-test-mvc:jar:1.0.0.BUILD-SNAPSHOT:test

編集2:

奇妙な理由で、.m2フォルダーからすべてのSpring 3.0.6 libsを削除してから、Webアプリケーションをパッケージ化すると、すべての3.0.6jarが再度ダウンロードされます。ただし、依存関係ツリーは上記のものです。私はそれがバージョンにいくつかの問題があり、古いものを使用しないようにセキュリティモジュールpomの一時的な依存関係をオーバーライドする必要があるspring-securityに関係していると思います...


編集3:

spring-data-jpaです。どうやら最新バージョンはまだSpring3.0.6に依存しています。pomの依存関係をオーバーライドすることで、Spring 3.1と一緒に動作させることができるので、テストが実行されます。ただし、データモジュールをWebアプリケーションに統合すると、Spring3.0.6を使用しようとします...その問題を回避する方法がわかりません。spring-data-jpa(バージョン1.1.0.RC1)の最新のRealase Candidateでさえ、Spring3.0.7に依存しています...

4

2 に答える 2

3

コンソールで、これを実行します。

mvn dependency:tree -Dincludes=org.springframework,org.springframework.security

これにより、Springアーティファクトへのすべての依存関係パスが一覧表示されます。どこかにあるSpring3.0.xアーティファクトへの推移的な依存関係があると確信しています。MavenもTomcatにもSpringの依存関係はありません!

あなたがチェックできるもう一つのことはフォルダです

src / main / webapp / WEB-INF / lib

存在する場合(通常はMaven Webアプリには存在しないはずです)、古いSpringJarが含まれている可能性があります。それを削除します。

于 2012-06-07T15:35:10.170 に答える
1

だから私はそれを理解しました..問題はmvn dependency:tree、一時的な依存関係を実際に示していないということです。

Spring-Data-Jpa 1.0.3.RELEASEいくつかのSpring 3.0.6依存関係があります。テストを実行するには、データプロバイダーモジュールでそれらを明示的にオーバーライドする必要があります。これにより、依存関係ツリーに表示されなくなりますが、Webアプリから除外されることはありませんWebアプリですべてのSpring依存関係を再度オーバーライドする必要があります。そうすれば、機能します。

理由はわかりません。Spring-data-jpaがすぐにSpring3.1にアップグレードされることを願っています。Maven3はこれらの一時的な依存関係をより適切に処理できるかもしれませんが、古いdependency:treeを使用するため、私の場合は表示されません。 。

私のwebapppom.xmlの一部:

<properties>
    <org.springframework-version>3.1.0.RELEASE</org.springframework-version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-asm</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
于 2012-06-08T11:18:39.837 に答える