gradle processResources似乎正在破坏字体文件

时间:2016-06-08 01:45:38

标签: java gradle fonts

我花了几个小时研究一个我认为与腐败文件有关的问题。基本上我在Spring启动应用程序中使用FlyingSaucer来生成符合语言的pdf。我所有的日文/中文/俄文字符都是空白的。经过深入研究后,我了解到我需要安装一个好的unicode字体,如Arial Unicode MS.ttf。

我已下载并安装在我的Mac上,看起来不错。我将它放入我的类路径中,将其放入/ resources并使用inputStream获取它。当我获取它并将其传递给BaseFont(pdf生成的东西)时,它无法说找不到表'name'。显然这是因为一个腐败的文件(谷歌说)。我注意到构建目录和src目录中的字体文件有不同的大小,所以对我来说它们肯定是腐败的。我已经尝试了其他几个.ttf,他们都抱怨名字表丢失了。

我已经知道gradle的processResources和Copy方法可以破坏文件,但我不理解修复。我似乎有些修复并复制它们但没有用。我只想将文件复制到构建目录中,以便我的spring引导jar可以在生成pdf时访问该字体。

这是我最近尝试过的最新片段,但没有成功(我是新手,这与工作有关)

processResources {
    ////    inputs.properties( version: version.toString() )
////
////    def sourceFiles = source.files
////
////    from(sourceFiles) {
////        include '**/*.properties'
////        filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [VERSION:
////                                                                            version.toString()])
////    }
////    from(sourceFiles) {
////        exclude '**/*.properties'
////    }
    filesNotMatching("**/*.ttf") {
        it.filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [
                releaseVersion: project.version,
                releaseDate: buildDate
        ])
    }
    filter(ReplaceTokens, tokens: [
            LOG_LEVEL_ROOT: buildEnvironment=='release' ? 'WARN' : 'INFO',
            LOG_LEVEL_WIRE: buildEnvironment=='mydev' ? 'DEBUG' : 'INFO',
            LOG_LEVEL_CR: buildEnvironment=='release' ? 'INFO' : 'DEBUG',
            LOG_LEVEL_DB_PARAMS: buildEnvironment=='release' ? 'INFO' : 'TRACE',
            LOG_LEVEL_DB_QUERY: buildEnvironment=='release' ? 'DEBUG' : 'DEBUG',
            LOG_LEVEL_SPRING: buildEnvironment=='release' ? 'INFO' : 'INFO'
    ])
}

根据谷歌的文件注意应该使它跳过我的.ttf文件,但它仍然被复制并损坏。我尝试将.ttf添加到另一个文件夹并使用gradle副本而不是processResources但是无法让它以这种方式工作(可能做错了)。

解决方案:https://github.com/grails/grails-core/issues/629

1 个答案:

答案 0 :(得分:3)

您的第二个filter适用于所有文件。您需要从该过滤中排除.ttf个文件。最简单的方法是将其移至filesNotMatching("**/*.ttf")块:

filesNotMatching("**/*.ttf") {
    it.filter(ReplaceTokens, tokens: [
            releaseVersion: project.version,
            releaseDate: buildDate
    ])

    it.filter(ReplaceTokens, tokens: [
            LOG_LEVEL_ROOT: buildEnvironment=='release' ? 'WARN' : 'INFO',
            LOG_LEVEL_WIRE: buildEnvironment=='mydev' ? 'DEBUG' : 'INFO',
            LOG_LEVEL_CR: buildEnvironment=='release' ? 'INFO' : 'DEBUG',
            LOG_LEVEL_DB_PARAMS: buildEnvironment=='release' ? 'INFO' : 'TRACE',
            LOG_LEVEL_DB_QUERY: buildEnvironment=='release' ? 'DEBUG' : 'DEBUG',
            LOG_LEVEL_SPRING: buildEnvironment=='release' ? 'INFO' : 'INFO'
    ])
}
相关问题