Необходимо исключить зависимость из затмения с помощью файла сборки Gradle - PullRequest
5 голосов
/ 27 сентября 2011

Я пытаюсь исключить зависимость, в основном "slf4j-simple" из моей сборки gradle.Это работает хорошо, но не отражается, когда я запускаю "gradle eclipse".

В моем файле сборки gradle есть следующий код:

apply plugin:'war'
apply plugin:'eclipse'
apply plugin:'jetty'
...
dependencies {
    compile 'mysql:mysql-connector-java:5.1.16'
    compile 'net.sourceforge.stripes:stripes:1.5'
    compile 'javax.servlet:jstl:1.2'
    ... (Rest of the dependencies)
}
configurations {
        all*.exclude group:'org.slf4j',module:'slf4j-simple'
}

Теперь, когда я запускаю 'сборку gradle', slf4j-simple исключен из созданного файла war, и это нормально.

Когда я запускаю' gradle eclipse ', slf4j-simple не исключается из пути к классу eclipse.

Aрешение проблемы упомянуто в поваренной книге, но я не понимаю, как ее применить:

http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-ExcludingdependenciesfromEclipseProjects

Ответы [ 4 ]

4 голосов
/ 27 сентября 2011

Попробуйте добавить это в свой build.gradle:

eclipseClasspath{
  plusConfigurations.each{
    it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' }
  }
}
2 голосов
/ 21 декабря 2011

С Gradle 1.0-milestone-3 мне пришлось сделать модификацию ответа Родиона, чтобы заставить его работать:

eclipseClasspath{
doFirst{
    plusConfigurations.each{
        it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' }
    }
   }
} 
1 голос
/ 18 декабря 2013

Использование eclipseClasspath у меня не сработало, но это помогает:

configurations {
    compile {
        exclude group: 'commons-logging'
        exclude module: 'jcl-over-slf4j'
    }
}

Это исключает commons-logging из транзитивного включения (из зависимости проекта от Spring), а также jcl-over-slf4j от включения в путь сборки проекта Eclipse (у меня есть зависимость Gradle runtime от jcl-over-slf4j, но я не хочу, чтобы она была включена в путь сборки (компиляции).

0 голосов
/ 24 сентября 2018

Это работает в Gradle 4.10

eclipse {
  classpath {            
    file {
      whenMerged { cp ->                  
        cp.entries.removeAll { (it instanceof Library)  && it.moduleVersion?.group == 'org.slf4j' && it.moduleVersion?.name == 'slf4j-simple' }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...