Grails资产管道:重新计算css中的url引用失败

Grails资产管道:重新计算css中的url引用失败,grails,asset-pipeline,Grails,Asset Pipeline,让我介绍一下背景情况。我们的grails app/assets文件夹如下所示 grails-app -- assets ----stylesheets ------parent.css ------somefolder ---------child.css ----fonts ------HelveticaNeue-Light.otf 我已经创建了一个FontAssetFile.groovy package app.asset import java.util.regex.Pattern

让我介绍一下背景情况。我们的grails app/assets文件夹如下所示

grails-app
-- assets
----stylesheets
------parent.css
------somefolder
---------child.css
----fonts
------HelveticaNeue-Light.otf
我已经创建了一个FontAssetFile.groovy

package app.asset

import java.util.regex.Pattern

class FontAssetFile extends asset.pipeline.AbstractAssetFile {
    static final List<String> contentType = ['font/opentype']
    static List<String> extensions = ['otf']
    static String compiledExtension = 'otf'
    static processors = []
    Pattern directivePattern = null

    public String directiveForLine (String line) { line }
}
css的内容是

@font-face {
    font-family: "Helvetica Neue Light";
    src: url('../HelveticaNeue-Light.otf');
}
当我在开发环境中运行应用程序时,代码可以引用字体文件,因为浏览器请求
127.0.0.1:8080/app/assets/somefolder/child.css

但当我在生产环境中运行应用程序时,代码无法引用字体文件,因为浏览器现在请求
127.0.0.1:8080/app/assets/parent.css
child.css文件已编译为一个文件,文件内容不在parent.css中 这意味着浏览器认为字体文件在资产文件夹之外,因为parent.css内容是

@font-face {
    font-family: "Helvetica Neue Light";
    src: url('../HelveticaNeue-Light.otf');
}
从文件中 我可以看到“…如果我们使用相对路径,资产管道就会理解该路径,并且可以根据可能需要CSS的任何根文件重新计算新的相对路径” 但当代码引用child.css文件中的url时,情况似乎并非如此

我需要能够在开发和生产环境中引用字体文件。
我曾考虑过在生产环境中禁用编译,但服务器将为每个资产提供单独的文件。我认为这不是最佳的。

请升级到最新的插件系列,其中重新计算的url是固定的(1.9.9),现在已经相当旧了

谢谢。这解决了url问题
@font-face {
    font-family: "Helvetica Neue Light";
    src: url('../HelveticaNeue-Light.otf');
}