maven - 防止 Flyway Maven 插件下载旧的 slf4j jar

标签 maven intellij-idea flyway

当我运行 flyway maven 插件时,它最初会下载版本为 1.5.6 的 slf4j jar :

[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)

这对我的 Spring Web 应用程序造成了严重破坏,因为我在那里使用 1.7.2 版的 slf4j,当我重新启动它时它会变得困惑。

我该如何防止这种情况发生?我尝试将排除项添加到我的 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>

但这仍然会发生。

更新:当我使用 Intellij 12 构建时,这是导致以下错误的原因:

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,

汤姆

最佳答案

Flyway Maven 插件 2.0.3 和 Flyway Core 2.0.3 都不依赖于 slf4j。检查您的依赖项。问题一定来自其他地方。

关于maven - 防止 Flyway Maven 插件下载旧的 slf4j jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146709/

相关文章:

Gradle 和 Flyway : Unable to obtain inputstream for resource

java - 为什么 Java 代码在调试器中变慢?

java - 如何解决映射到非java文件类型文本的java文件

maven - 将文件读入 Maven 属性

maven - 如何将Maven插件添加到Grails 2.2应用程序?

maven - 如何使用Maven创建JSP + Servlet + TOMCAT + MySQL

flyway - 如何通过 micronaut 应用程序配置设置 Flyway 占位符?

mysql - Flyway数据导入仅适用于MySQL,不适用于H2

java - 使用 Maven 进行 Java Web 开发

java - 导入项目后如何将项目复制到eclipse的工作区?