gradle - 在gradle的扩展/复制过程中,如何/可以将辅助文件包含到文件中?

标签 gradle groovy include template-engine

我正在尝试对各种XML文件进行模板化。我想做的是能够通过包含几个子XML文件来构建父XML。这应该在使用SimpleTemplateEngine的expand()-> copy()期间发生

举个例子:

Gradle :

processResources {
     exclude '**/somedir/*'
     propList.DESCRIPTION = 'a description goes here'
     expand(propList)
}

Parent.XML:
<xml>
   <line1>something</line1>
   <%include file="Child.XML" %>
 </xml>

该文档指出,SimpleTemplateEngine使用JSP <%语法和<%=表达式,但不一定提供支持的功能列表。

包含失败,因为它不是生成的SimpleTemplateScript上的有效方法,也许我是说eval吗?

我最想让事情起作用的是:
<xml>
   <line1>something</line1>
   <% evaluate(new File("Child.xml")) %>
 </xml>

当它在查看进程工作目录时,而不是在父文件目录中,结果是404的Child.xml。如果我将其引用为“build / resources / main / templates .... / Child.xml”,则在解析Child时会收到“意外 token :<@行....”错误。

能做到吗?如果可能,是否需要更改模板引擎?理想情况下,它也应该处理Child中的所有 token 。

这在JSP中非常简单。我以某种方式给人以我可以将这些文件视为GSP的印象,但是我不确定如何正确使用GSP标签,即使那是真的。

一如既往地提供任何帮助,我们将不胜感激。

谢谢。

最佳答案

This documentation没有提到JSP。 SimpleTemplateEngine的语法为${}

如果我有这个build.gradle文件,请使用Gradle 3.4-rc2:

task go(type: ProcessResources) {
    from('in') {
        include 'root.xml'
    }

    into 'out'

    def props = [:]
    props."DESCRIPTION" = "description"
    expand(props)
}

其中in/root.xml是:
<doc>
    <name>root</name>
    <desc>${DESCRIPTION}</desc>

${new File("in/childA.xml").getText()}
</doc>
in/childA.xml是:
<child>
    <name>A</name>
</child>

那么输出是:
<doc>
    <name>root</name>
    <desc>description</desc>

<child>
    <name>A</name>
</child>

</doc>

关于gradle - 在gradle的扩展/复制过程中,如何/可以将辅助文件包含到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567945/

相关文章:

apache - 在 Apache 上使用 Brotli 提供预压缩内容

c++ - 如何在 Ubuntu 中使用 apt 安装 #include <whatever.h>

c - 在 Mac OS 中我可以使用什么来代替#include<graphics.h>?

javascript - Kotlin JS 项目的基本 Gradle 脚本 Kotlin 文件是什么样的?

gradle - 如何在build.gradle中定义和调用自定义方法?

grails - 我可以将Grails项目外的Grails插件类用作Jar依赖项吗?

java - 随机访问文件和 UTF 8 行

Android/Gradle - 仅包含传递依赖项

android - 是否可以在 Android 中使用 Maven 而不是 Gradle?

python - 在 Grails 应用程序后面使用 Python 或 C