2013-01-03 23 views
3

当我跑飞路Maven插件它最初下载一个版本1.5.6的SLF4J罐子:防止迁飞Maven插件从网上下载老坛子SLF4J

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

这起严重破坏了我春天的web应用程序,因为我在使用slf4j的版本1.7.2时,它会在我重新启动时感到困惑。

我该如何预防?我已经尝试在我的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> 

但这仍然发生。

UPDATE:这是什么原因造成的是下面的错误,当我与建设的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. 

UPDATE:输出 MVN依赖性:树-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,

汤姆

+2

插件总是下载定义的依赖关系。它们不包含在运行时和编译中。 –

+0

也许不是,但当我尝试运行我的应用程序时,他们混淆了我的Intellij。如果这是问题,我该如何解决? – TomL

+0

你能解释一下IntelliJ怎么弄糊涂了吗?究竟发生了什么? – yegor256

回答

1

无论是在F而不是Maven插件2.0.3,也不是Flyway Core 2.0.3依赖于slf4j。检查你的依赖关系。问题必须来自其他地方。

+0

非常感谢您的支持。非常奇怪的是,这种情况现在才会显示出来,但是由于我没有直接使用maven,它必须是之前使用slf4j的依赖项 - 现在试图找到它。 – TomL

+1

mvn依赖项的输出:tree -Dverbose -Dincludes = org.slf4j添加到问题中,否则似乎会提示 – TomL

+0

看起来您需要排除org.slf4j:slf4j-jdk14:jar和org.slf4j:slf4j-nop from org.apache.maven:maven-core和org.apache.maven.wagon:wagon-webdav-jackrabbit –

0

我有类似的问题,并通过使用flyway-core依赖而不是flyway-maven-plugin dependency来解决它。

0

FLyway下载slf4j依赖项,如果您的应用程序使用1.7.x或1.6.x版本,那么您将遇到此问题,因为flyway会下载1.5.3版本的slf4j-nop和1.5.6版本的slf4j-jdk14。在Eclipse中,您可以pom.xml的

的依赖层次结构下看到这个为了摆脱这一点,添加以下所有exclusiions和你做

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