Как мне написать этот код исключения Maven в Gradle?

Я пытаюсь использовать последнюю (основную) версию Betamax в проекте Spring Boot, и я получаю сообщение об ошибке SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackruError.,

Итак, я посмотрел верхний ответ на этот вопрос, и он говорит, чтобы исключить конфликтные зависимости, выполнив это:

<exclusions>
  <exclusion> 
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
  </exclusion>
  <exclusion> 
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusion>
</exclusions> 

Но мой проект использует Gradle, поэтому мне нужно преобразовать его в Gradle, и я действительно не знаю, что делаю. Я посмотрел на этот пост и попытался возиться с ним, как

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

2 ответа

Спасибо за помощь ребята. Я смог исправить ошибку, следуя совету дона Боттштейна и делая это:

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

Правильный синтаксис:

dependencies {
    compile("org.gradle.test.excludes:api:1.0") {
        exclude group: "org.springframework", module: "spring-core"
    }
}

Куда:

  • org.gradle.test.excludes: api: 1.0 - идентификатор группы: идентификатор артефакта: версия
  • group: "org.springframework", модуль: "spring-core" - это группа: groupId, модуль:artifactId
Другие вопросы по тегам