2011-09-27 14 views
5

Estoy tratando de excluir una dependencia, principalmente "slf4j-simple" de mi compilación de gradle. Funciona bien, pero no se refleja cuando ejecuto "eclipse gradle".Necesito excluir una dependencia de eclipse usando un archivo de compilación gradle

que tienen el código siguiente en mi fichero de construcción 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' 
} 

Ahora, cuando corro 'construir Gradle', el slf4j simple queda excluido del archivo de la guerra creada que está bien.

Cuando ejecuto 'gradle eclipse', el slf4j-simple no se excluye del classpath del eclipse.

Una solución al problema es mencionado en el libro de cocina Gradle pero no entiendo cómo aplicarlo:

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

Respuesta

4

Trate de añadir esto a su build.gradle:

eclipseClasspath{ 
    plusConfigurations.each{ 
    it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' } 
    } 
} 
+0

Tengo una pregunta más importante. ¿Cómo puedo aprender gradle y comprender cómo manipular tales configuraciones avanzadas? Realmente no puedo entenderlo, cada vez que necesito algo necesito publicar una pregunta. –

+1

Gradle tiene una documentación bastante buena en su sitio web oficial. Aprendí todo lo que necesitaba saber a partir de ahí (y al observar el código fuente de Gradle ocasionalmente). Para cualquier otra cosa, pregunte aquí o en google)) – rodion

+1

Usando el plugin IDE de Gradle en Eclipse Kepler esto no está funcionando. Tengo una dependencia de tiempo de ejecución que intento excluir utilizando el método anterior; Eclipse Gradle ejecuta build.gradle sin quejarse, pero la ruta de compilación del proyecto todavía contiene el artefacto excluido. –

2

Con gradle 1.0-milestone-3 tuve que hacer una modificación desde la respuesta de rodion para que funcione:

eclipseClasspath{ 
doFirst{ 
    plusConfigurations.each{ 
     it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' } 
    } 
    } 
} 
1

Usando eclipseClasspath no funcionó para mí, pero esto hace el truco:

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

que excluye commons-logging de ser incluido de forma transitiva (de la dependencia del proyecto en la primavera) y también jcl-over-slf4j de ser incluido en la construcción del proyecto Eclipse ruta de acceso (tengo una dependencia de Gradle runtime en jcl-over-slf4j pero no la quiero incluir en la ruta de compilación).

Cuestiones relacionadas