覆盖 Grails 内置库?

Overriding Grails built-in library?

Grails "rendering" 插件使用 org.xhtmlrenderer。 Grails 本身与 org.xhtmlrenderer:core-renderer:R8 打包在一起,显然从依赖报告中使用了 grails-docs。

此版本的 xhtmlrender 中存在一个与 twitter bootstrap 冲突的错误,并且仅在 github 存储库中得到修复。我已经构建了这个新版本并通过 maven 成功安装了它,但是对于我来说我无法获得 "rendering" 插件来使用它。我什至尝试构建自己的渲染插件版本,但这不起作用,根据依赖报告 "rendering" 甚至不依赖于 org.xhtmlrenderer:core-renderer:R8 .

在 BuildConfig.groovy 中,我已经尝试过(在很多很多其他的事情中):

inherits("global") {
        // specify dependency exclusions here; for example, uncomment this to disable ehcache:
        // excludes 'ehcache'
        excludes 'core-renderer-M8', 'org.xhtmlrenderer', 'core-renderer'
    }

compile 'org.xhtmlrenderer:flying-saucer-core:9.0.1-custom' 
runtime 'org.xhtmlrenderer:flying-saucer-core:9.0.1-custom'

无济于事。

如何让 "rendering" 使用我的 org.xhtmlrenderer 自定义版本?是构建 "rendering" 插件的本地版本并将我在项目 BuildConfig.groovy 中尝试的排除和依赖信息添加到插件 BuildConfig.groovy 的技巧吗?

你需要做的是从继承的全局依赖项中排除grails-docs,然后专门添加排除xhtmlrenderer(虽然看起来这只是包名,你需要排除flying-sauce-core)。这将让您指定您自己的库版本。

grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        excludes 'grails-docs'
    }

    dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
        // runtime 'mysql:mysql-connector-java:5.1.24'
        build('org.grails:grails-docs:2.3.7') {
            excludes 'flying-saucer-core'
        }
    }
}