【发布时间】:2011-09-09 05:50:56
【问题描述】:
我正在使用 IntelliJ IDEA 10.0.1 和 Grails 1.3.7。我有一个 mavenized Grails 项目,它依赖于许多日志库。
问题来了:
我必须使用 JCL 作为日志框架,但 grails 默认使用 SLF4J,并且有一些默认依赖项,例如 jcl-over-slf4j,每个 grails 项目都继承这些依赖项。首先,我在我的项目 pom 文件中排除了每个 jcl-over-slf4j 传递依赖,并使用 mvn dependency:tree 验证我的 pom 没有任何 SLF4J 桥接库.
但是,当我尝试启动我的 grails 应用程序时,jcl-over-slf4j 仍然被下载到我的本地 maven 存储库中。这显然会在运行时导致 StackOverflowError,因为 jcl-over-slf4j 和 slf4j-jcl 都在类路径中。
那么由于哪个声明 jcl-over-slf4j 依赖项仍在下载?
由于我的 pom 是干净的,显而易见的结论是 Grails 本身依赖于这些库。如前所述,Grails 有一些默认依赖项,每个 Grails 项目都依赖这些依赖项。
我知道我可以在 BuildConfig.groovy 文件中排除继承的依赖项,如果我运行 grails dependency-report,我还可以看到这些依赖项不再列出。
grails.project.dependency.resolution = {
inherits("global") {
excludes "jcl-over-slf4j", "jul-to-slf4j", "slf4j-log4j12"
}
}
但即便如此,当我启动我的 grails 应用程序时,jcl-over-slf4j 依赖项仍然会下载到我的存储库中!我错过了什么吗?当您使用 mavenized grails 项目时,是否有其他方法可以排除继承的 grails 依赖项?
任何帮助将不胜感激
谢谢! 斜线
【问题讨论】:
标签: grails