2012-07-16 28 views
5

上でビルドエラーを引き起こして、私は今、私は、そのpom.xmlslf4jのJava/Mavenを:異なるプロジェクトで異なるSLF4Jバージョン統合

に依存し、次の持つさまざま project Bを持つ pom.xml slf4j

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.5.10</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.10</version> 
    </dependency> 

に、次の依存関係を持つproject Aを持っています

</dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.4</version> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>1.0.3</version> 
    </dependency> 

今、私は二つのプロジェクトを統合する必要がありますが、彼らはtogetうまく再生されません彼女は異なったバージョンを持っています。 pom.xml

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.4</version> 
    </dependency> 

を変更した後、私は

SLF4J: The requested version 1.5.10 by your slf4j binding is not compatible with [1.6] 
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details. 

とテストを言うエラーがで失敗するように見えるの構築を参照し始めproject A でSLF4Jのアップグレード - これは私が
アプローチ1を試みたものです

java.lang.IllegalStateException: Failed to load ApplicationContext 
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:308) 
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109) 
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) 
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:220) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:301) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:303) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) 
    at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:220) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180) 
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59) 
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115) 
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102) 
    at org.apache.maven.surefire.Surefire.run(Surefire.java:180) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350) 
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 

アプローチ2 -

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.5.10</version> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>1.0.3</version> 
    </dependency> 

を次のようにpom.xmlを変更した後、私はこの問題にアプローチする最良の方法は何

testPutDocument(com.org.sparrow.business.persist.MongoServiceTest): org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple; 
    testPutDocuments(com.org.sparrow.business.persist.MongoServiceTest): org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple; 
    testGetDocument(com.org.sparrow.business.persist.MongoServiceTest): org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple; 

としてテストでエラーをproject B

でダウングレードSLF4Jを参照してください?

UPDATE 依存関係ツリーは、ここにあなたの質問に

[INFO] +- commons-codec:commons-codec:jar:1.4:compile 
[INFO] +- spy:spymemcached:jar:2.6:compile 
[INFO] +- com.google.code.findbugs:annotations:jar:1.3.9:compile 
[INFO] +- com.google.code.findbugs:jsr305:jar:1.3.9:compile 
[INFO] +- redis.clients:jedis:jar:1.4.0:compile 
[INFO] +- com.googlecode:hibernate-memcached:jar:1.2.2:compile 
[INFO] | \- spy:memcached:jar:2.4.2:compile 
[INFO] +- j2ssh:core:jar:0.2.9-SR:compile 
[INFO] +- emma:maven-emma-plugin:jar:0.5:test 
[INFO] | +- ant:ant:jar:1.6.3:test 
[INFO] | \- emma:emma_ant:jar:2.0.5312:test 
[INFO] +- emma:emma:jar:2.0.4217:test 
[INFO] | +- commons-jelly:commons-jelly-tags-regexp:jar:1.0:test 
[INFO] | \- regexp:regexp:jar:1.3:test 
[INFO] +- org.apache.commons:commons-email:jar:1.1:compile 
[INFO] | +- javax.mail:mail:jar:1.4:compile 
[INFO] | \- javax.activation:activation:jar:1.1:compile 
[INFO] +- hsqldb:hsqldb:jar:1.8.0.7:test 
[INFO] +- org.aspectj:aspectjrt:jar:1.6.1:compile 
[INFO] +- org.aspectj:aspectjweaver:jar:1.6.1:compile 
[INFO] +- org.springframework:spring-context-support:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-web:jar:3.0.5.RELEASE:compile 
[INFO] | \- aopalliance:aopalliance:jar:1.0:compile 
[INFO] +- org.springframework:spring-tx:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-core:jar:3.0.5.RELEASE:compile 
[INFO] | +- org.springframework:spring-asm:jar:3.0.5.RELEASE:compile 
[INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile 
[INFO] +- org.springframework:spring-context:jar:3.0.5.RELEASE:compile 
[INFO] | \- org.springframework:spring-expression:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-beans:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-jdbc:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-orm:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-webmvc:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-agent:jar:2.5.6:compile 
[INFO] +- org.springframework:spring-aop:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-aspects:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework.security:spring-security-core:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework.security:spring-security-web:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework.security:spring-security-cas-client:jar:3.0.5.RELEASE:compile 
[INFO] | \- org.jasig.cas:cas-client-core:jar:3.1.10:compile 
[INFO] +- org.springframework.security:spring-security-config:jar:3.0.5.RELEASE:compile 
[INFO] +- org.jasig.cas.client:cas-client-core:jar:3.2.0:compile 
[INFO] +- org.hibernate:hibernate-envers:jar:3.5.6-Final:compile 
[INFO] | +- org.hibernate:hibernate-core:jar:3.5.6-Final:compile 
[INFO] | | +- antlr:antlr:jar:2.7.6:compile 
[INFO] | | \- javax.transaction:jta:jar:1.1:compile 
[INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final:compile 
[INFO] | +- org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile 
[INFO] | +- org.hibernate:hibernate-annotations:jar:3.5.6-Final:compile 
[INFO] | \- org.hibernate:hibernate-tools:jar:3.2.0.ga:compile 
[INFO] |  +- org.beanshell:bsh:jar:2.0b4:compile 
[INFO] |  +- freemarker:freemarker:jar:2.3.8:compile 
[INFO] |  \- org.hibernate:jtidy:jar:r8-20060801:compile 
[INFO] +- org.hibernate:hibernate-entitymanager:jar:3.5.6-Final:compile 
[INFO] | \- cglib:cglib:jar:2.2:compile 
[INFO] |  \- asm:asm:jar:3.1:compile 
[INFO] +- org.hibernate:hibernate-c3p0:jar:3.5.6-Final:compile 
[INFO] +- org.hibernate:hibernate-validator:jar:4.1.0.Final:compile 
[INFO] | \- javax.validation:validation-api:jar:1.0.0.GA:compile 
[INFO] +- org.springframework:spring-hibernate3:jar:2.0.8:compile 
[INFO] +- org.slf4j:slf4j-api:jar:1.5.10:compile 
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.5.10:compile 
[INFO] +- javassist:javassist:jar:3.4.GA:compile 
[INFO] +- c3p0:c3p0:jar:0.9.1.2:compile 
[INFO] +- eu.medsea:utils:jar:1.0:compile 
[INFO] +- velocity-tools:velocity-tools-view:jar:1.4:compile 
[INFO] +- velocity:velocity:jar:1.5:compile 
[INFO] | +- commons-collections:commons-collections:jar:3.1:compile 
[INFO] | +- commons-lang:commons-lang:jar:2.1:compile 
[INFO] | \- oro:oro:jar:2.0.8:compile 
[INFO] +- axis:axis:jar:1.4:compile 
[INFO] | +- org.apache.axis:axis-jaxrpc:jar:1.4:compile 
[INFO] | +- org.apache.axis:axis-saaj:jar:1.4:compile 
[INFO] | \- commons-discovery:commons-discovery:jar:0.2:runtime 
[INFO] +- junit:junit:jar:4.8.2:compile 
[INFO] +- org.jmock:jmock-junit4:jar:2.5.1:compile 
[INFO] | \- org.jmock:jmock:jar:2.5.1:compile 
[INFO] |  +- org.hamcrest:hamcrest-core:jar:1.1:compile 
[INFO] |  \- org.hamcrest:hamcrest-library:jar:1.1:compile 
[INFO] +- xalan:xalan:jar:2.7.0:compile 
[INFO] | \- xml-apis:xml-apis:jar:1.0.b2:compile 
[INFO] +- xerces:xercesImpl:jar:2.4.0:compile 
[INFO] +- jdom:jdom:jar:1.0:compile 
[INFO] +- net.sourceforge.jexcelapi:jxl:jar:2.6:compile 
[INFO] +- log4j:log4j:jar:1.2.15:compile 
[INFO] +- jaxen:jaxen:jar:1.1.1:compile 
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | \- xom:xom:jar:1.0:compile 
[INFO] |  +- xerces:xmlParserAPIs:jar:2.6.2:compile 
[INFO] |  \- com.ibm.icu:icu4j:jar:2.6.1:compile 
[INFO] +- mapquest:mapquest:jar:5.3.0:compile 
[INFO] +- jfree:jfreechart:jar:1.0.0:compile 
[INFO] | \- jfree:jcommon:jar:1.0.0:compile 
[INFO] +- org.fraid.fraid:fraid:jar:1.5:compile 
[INFO] +- com.thoughtworks.xstream:xstream:jar:1.3.1:compile 
[INFO] | \- xpp3:xpp3_min:jar:1.1.4c:compile 
[INFO] +- mysql:mysql-connector-java:jar:5.1.13:compile 
[INFO] +- joda-time:joda-time:jar:1.6:compile 
[INFO] +- nl.jqno.equalsverifier:equalsverifier:jar:0.6.2:test 
[INFO] | +- org.objenesis:objenesis:jar:1.1:test 
[INFO] | \- cglib:cglib-nodep:jar:2.2:test 
[INFO] +- org.easymock:easymockclassextension:jar:2.5.2:test 
[INFO] | \- org.easymock:easymock:jar:2.5.2:test 
[INFO] +- org.springframework:spring-test:jar:3.0.5.RELEASE:compile 
[INFO] +- cdyne:cdyne:jar:3.0:compile 
[INFO] | \- javax.xml:jaxrpc-api:jar:1.1:compile 
[INFO] +- json:json:jar:0.0.1:compile 
[INFO] +- org.dbunit:dbunit:jar:2.4.8:test 
[INFO] +- org.mongodb:mongo-java-driver:jar:2.2:compile 
[INFO] +- com.google.code.gson:gson:jar:1.4:compile 
[INFO] +- xml-security:xmlsec:jar:1.3.0:compile 
[INFO] \- javatar:javatar:jar:2.5:compile 
+1

アプローチ1はあなたのベスト・ベットのように聞こえます。あなたは依存関係を投稿できますか:ツリー?複数のslf4jバインディングが取り込まれているようですが、バージョンを変更したときにそのうちの1つがアップグレードされていなかったようです。 – jsight

+0

更新された – daydreamer

+0

を参照してください。その解像度では、読むことは不可能です。おそらく、mvn依存関係の結果を貼り付けます:tree? – jsight

答えて

1

であるあなたがプロジェクトAのポンポンでバージョン1.6.4にSLF4J-APIとSLF4J-log4j12をアップグレードしていることに言及します。あなたが投稿した依存関係ツリーには、slf4j-apiとslf4j-log4j12のバージョン1.5.0が含まれています。 slf4j-apiとそのバインディングのバージョンが一致するようにバージョンを整理する限り、あなたは大丈夫です。

他の依存関係がSLF4Jに対して宣言しているSLF4Jのバージョンは関係ありません。クライアントの視点からall versions of slf4j are binary compatible

1

他のプロジェクトのライブラリとして組み込むJarプロジェクトは、slf4j-api以外のPOMには何も含めないでください。実装を決定するのは最終プロジェクト(つまり、あなたの例ではプロジェクトA)です。プロジェクトBのテストでは、slf4j-log4j12やlog4jなどの実装を含めることは可能ですが、Mavenのスコープはtestである必要があります。

関連する問題