我正在尝试对各种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/