我试图在Spring Boot项目中使用最新(主)版本的Betamax,并且我收到错误SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError.
。
所以我查看了this question的最佳答案,并说它通过这样做来排除冲突依赖:
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
但我的项目使用Gradle,所以我必须将其转换为Gradle,我真的不知道自己在做什么。我查看了this post,并试着像
一样搞乱它dependencies {
...
compile('org.slf4j') {
exclude module: 'slf4j-log4j12'
}
}
但似乎没有任何效果。任何人都可以帮我找出正确的语法吗?我真的很感激任何帮助。
如果它有帮助,我的依赖块目前看起来像这样:
dependencies {
testCompile 'org.springframework.boot:spring-boot-starter-test:1.2.1.RELEASE'
testCompile 'org.codehaus.groovy:groovy-all:2.3.3'
testCompile 'co.freeside.betamax:betamax-proxy:2.0-SNAPSHOT'
testCompile 'co.freeside.betamax:betamax-junit:2.0-SNAPSHOT'
compile 'org.springframework.boot:spring-boot-starter-log4j2:1.2.1.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-web:1.2.1.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-data-jpa:1.2.1.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-tomcat:1.2.1.RELEASE'
compile 'org.apache.tomcat.embed:tomcat-embed-jasper'
compile 'com.domingosuarez.boot:spring-boot-starter-jade4j:0.2'
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.4.0'
compile 'com.mashape.unirest:unirest-java:1.4.5'
runtime 'mysql:mysql-connector-java:5.1.34'
runtime 'net.kencochrane.raven:raven-log4j2:6.0.0'
}
答案 0 :(得分:1)
谢谢你的帮助,伙计们。我能够按照Don Bottstein的建议来解决这个错误:
testCompile('co.freeside.betamax:betamax-proxy:2.0-SNAPSHOT') {
exclude module: 'slf4j-log4j12'
}
testCompile('co.freeside.betamax:betamax-junit:2.0-SNAPSHOT') {
exclude module: 'slf4j-log4j12'
}
答案 1 :(得分:0)
正确的语法是:
dependencies {
compile("org.gradle.test.excludes:api:1.0") {
exclude group: "org.springframework", module: "spring-core"
}
}
其中: