Я работаю с IntelliJ IDEA 10.0.1 и Grails 1.3.7. У меня есть Mavenized Grails проект, который зависит от многих библиотек журналов.
Вот проблема:
Я должен использовать JCL в качестве каркаса журналирования, но по умолчанию Grails работает с SLF4J и имеет некоторые зависимости по умолчанию, такие как jcl-over-slf4j , которые наследуются каждым проектом grails. Прежде всего, я исключил каждую jcl-over-slf4j транзитивную зависимость в моем файле pom проекта и проверил с помощью mvn зависимость: дерево , что мой pom очищен от любых библиотек мостов SLF4J.
Но тем не менее jcl-over-slf4j все еще загружается в мое локальное хранилище Maven, когда я пытаюсь запустить приложение Grails. Это, очевидно, приводит к ошибке StackOverflowError во время выполнения, так как jcl-over-slf4j и slf4j-jcl находятся в пути к классам.
Так из-за какого объявления все еще загружается зависимость jcl-over-slf4j ?
Поскольку мой pom чист, очевидным выводом будет то, что Grails сам зависит от этих библиотек. Как упоминалось ранее, у Grails есть некоторые зависимости по умолчанию, от которых зависит каждый проект Grails.
Я знаю, что могу исключить унаследованные зависимости в файле BuildConfig.groovy, и если я запущу отчет о зависимостях grails Я также вижу, что эти зависимости больше не перечислены.
grails.project.dependency.resolution = {
inherits("global") {
excludes "jcl-over-slf4j", "jul-to-slf4j", "slf4j-log4j12"
}
}
Но даже тогда зависимость jcl-over-slf4j все еще загружается в мой репозиторий, когда я запускаю приложение Grails! Я что-то пропустил? Есть ли другой способ исключить унаследованные зависимости grails при использовании проекта mavenized grails?
Любая помощь будет оценена
Спасибо!
Slash