- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我花了几个小时来解决我认为与损坏文件有关的问题。基本上我在 spring boot 应用程序中使用 FlyingSaucer 来生成语言兼容的 pdf。我所有的日文/中文/俄文字符都是空白的。经过深入研究,我了解到我需要安装一个好的 unicode 字体,例如 Arial Unicode MS.ttf。
我已经下载并安装在我的 mac 上,看起来不错。我通过将它放入/resources 并使用 inputStream 获取它来将它放入我的类路径中。当我获取它并将其传递给 BaseFont(生成 pdf 的东西)时,它没有说找不到表“名称”。显然是因为文件损坏(google fu 说)。我注意到构建目录和 src 目录中的字体文件有不同的大小,所以对我来说它们肯定是损坏的。我尝试了其他几个 .ttf,但他们都提示缺少名称表。
我了解到 gradle 的 processResources 和 Copy 方法会损坏文件,但我不明白修复方法。我似乎进行了一些修复并复制了它们,但无济于事。我只想将一个文件复制到构建目录中,以便我的 spring boot jar 在生成 pdf 时可以访问该字体。
这是我最近尝试但没有成功的片段(我是 gradle 的新手,这是与工作相关的)
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'
])
}
根据 google 的说法,filesnotMatching 应该会跳过我的 .ttf 文件,但它仍然会被复制并损坏。我尝试将 .ttf 添加到不同的文件夹并使用 gradle copy 而不是 processResources 但无法让它以这种方式工作(可能做错了)。
最佳答案
您的第二个过滤器
应用于所有文件。您需要从该过滤中排除 .ttf
文件。最简单的方法是将其移动到 filesNotMatching("**/*.ttf")
block 中:
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'
])
}
关于java - gradle processResources 似乎正在破坏字体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37692006/
等级:如何自定义processResources以更改jar中的资源文件路径? 例如: foo/a.xml --> foo/bar/a.xml 类似于: copy tree with gradle
我们有一个可选的 gradle 任务 docker这取决于任务 war ,如果执行,需要生成一个带有额外文件的war文件。这个额外的文件可以添加到 processResources 中的资源中。任务(
在 jar 任务中,我想替换 conf 文件中的一些文本。 jar { ext { excludedClasses = ["com.MyClass1", "com.MyClas
我希望这是一个简单的问题,但我没有找到答案。 我想让 build.gradle 文件通过替换某些变量来设置我的 Spring Boot 应用程序中的版本。这与广告一样有效: def tokens =
我喜欢在我的 gradle 项目中过滤特定的 java 资源。有些文件应该只替换内容,有些文件也应该重命名(并替换不同的内容)。 我的 gradle java 项目设置是: > cat build.g
如何在包含 $ 字符的文件上执行 gradle processResources 而不转义文件中的 $? 按照 Spring Boot reference docs 的建议,我有一些静态 html 文
我花了几个小时来解决我认为与损坏文件有关的问题。基本上我在 spring boot 应用程序中使用 FlyingSaucer 来生成语言兼容的 pdf。我所有的日文/中文/俄文字符都是空白的。经过深入
环境: - Spring Boot - Gradle - Kotlin 我在 Gradle 中配置了自动属性扩展以在我的 application.yml 中使用 gradle 属性 processRe
以下似乎是 gradle 中过滤资源文件子集的常用习惯用法。我明白它的作用,但我无法解读语法: processResources { filesMatching('foo/*.html') {
我必须从 processResources gradle 任务中排除 xsl 和 xsd 类型的文件。目前我只排除了 xsl 文件和我的 build.gradle 片段,如下所示: processRe
我们有一个奇怪的问题,即删除 META-INF 文件夹和编译类以启动的 compileJava 任务随机且不频繁地运行,但 processResources 任务报告是最新的,即使 META-INF
在 IntelliJ 中运行或调试 Java 应用程序时,src 中捆绑的资源需要处理的文件夹。如果实际应用程序恰好是一个 gradle 项目,IntelliJ 需要运行 processResourc
我在基于 groovy 的构建脚本中有以下内容。如何在基于 kotlin 的脚本中执行相同的操作? processResources { filesMatching('application.
我目前正在做一个项目。该项目的资源包含许多 json 文件,这些文件最终都在最终的 jar 中。我已经在处理资源了。就像重命名文件和替换某些其他文件中的某些字符串一样。所以 processResour
我们正在从 Java/Gradle 堆栈迁移到 Scala/SBT。我们的 gradle 构建正在利用一个名为 processResources 的任务和一些名为 ReplaceTokens 的 An
替换我的 Spring Boot 中的属性 application.yml我已经添加: processResources { filesMatching("**/application.yml
我有一个 IDEA 2016.1 Enterprise 和一个 Gradle 2.12 多模块项目。在其中一个模块中,在 src/main/resources 中,我有一个文件,我希望 Gradle
当使用 gradle build 命令从命令行构建时,属性字段被正确替换,但是,当使用 IntelliJ IDEA IDE 时,它不是。 代码在build.gradle ext { port
我是一名优秀的程序员,十分优秀!