3

flyway mavenプラグインを実行すると、最初にバージョン1.5.6のslf4jjarがダウンロードされます。

[INFO] ------------------------------------------------------------------------
Downloading: http://repo1.maven.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.pom
Downloaded: http://repo1.maven.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.pom (2 KB at 21.3 KB/sec)
Downloading: http://repo1.maven.org/maven2/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom
Downloaded: http://repo1.maven.org/maven2/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom (8 KB at 154.7 KB/sec)

ここでslf4jのバージョン1.7.2を使用しているので、これは私のSpring Webアプリで大混乱を引き起こし、再起動すると混乱します。

どうすればこれを防ぐことができますか?pom.xmlに除外を追加しようとしました:

<groupId>com.googlecode.flyway</groupId>
                <artifactId>flyway-maven-plugin</artifactId>
                <version>2.0.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>jcl-over-slf4j</artifactId>
                    </exclusion>
                </exclusions>

しかし、これはまだ起こります。

更新:これが原因で、Intellij12でビルドすると次のエラーが発生します。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/tom/Library/Caches/IntelliJIdea12/tomcat/Unnamed_incrowdnow/work/Catalina/localhost/_/WEB-INF/lib/slf4j-jdk14-1.5.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/tom/Library/Caches/IntelliJIdea12/tomcat/Unnamed_incrowdnow/work/Catalina/localhost/_/WEB-INF/lib/slf4j-simple-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory]
SLF4J: The requested version 1.5.6 by your slf4j binding is not compatible with [1.6, 1.7]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.

更新:mvn依存関係の出力:tree -Dverbose -Dincludes = org.slf4j

[INFO] \- com.googlecode.flyway:flyway-maven-plugin:jar:2.0.3:compile
[INFO]    \- org.apache.maven:maven-core:jar:2.2.1:compile
[INFO]       +- org.apache.maven.wagon:wagon-webdav-jackrabbit:jar:1.0-beta-6:runtime
[INFO]       |  +- org.apache.jackrabbit:jackrabbit-webdav:jar:1.5.0:runtime
[INFO]       |  |  \- (org.slf4j:slf4j-api:jar:1.5.3:runtime - omitted for conflict with 1.7.2)
[INFO]       |  \- org.slf4j:slf4j-nop:jar:1.5.3:runtime
[INFO]       |     \- (org.slf4j:slf4j-api:jar:1.5.3:runtime - omitted for conflict with 1.7.2)
[INFO]       +- org.slf4j:slf4j-jdk14:jar:1.5.6:runtime
[INFO]       |  \- (org.slf4j:slf4j-api:jar:1.5.6:runtime - omitted for conflict with 1.7.2)
[INFO]       \- (org.slf4j:jcl-over-slf4j:jar:1.5.6:runtime - omitted for conflict with 1.7.2)

TIA、

トム

4

3 に答える 3

1

FlywayMavenプラグイン2.0.3もFlywayCore2.0.3もslf4jに依存していません。依存関係を確認してください。問題はどこかから来ているに違いありません。

于 2013-01-04T15:04:21.337 に答える
0

同様の問題があり、flyway-maven-plugin依存関係の代わりにflyway-core依存関係を使用して解決しました。

于 2015-06-17T08:57:27.160 に答える
0

FLywayはslf4jの依存関係をダウンロードします。アプリケーションが1.7.xまたは1.6.xバージョンを使用している場合、flywayは1.5.3バージョンのslf4j-nopと1.5.6バージョンのslf4j-jdk14をダウンロードするため、この問題が発生します。Eclipseでは、pom.xmlの依存関係階層でこれを確認できます。

これを取り除くために、以下のすべての除外を追加すれば完了です

        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>log4j-over-slf4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-nop</artifactId>
            </exclusion>    
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-jdk14</artifactId>
            </exclusion>                
        </exclusions>    
于 2015-06-27T19:21:22.857 に答える