Java編譯在ANT和Gradle中正常工作。我只是想找到方法來編寫Gradle中的代碼來生成xml文件,ANT正在做什麼(請參見下文)。使用XSL XML模板生成的Gradle任務
文件夾結構:所述pattern.properties文件的
src/java -- containing java src code src/xml -- contains folders: patterns -- contains one xxx.properties file and bunch of .xml and .template files schema -- contains a .xsd file stylesheet -- contains 3 .xsl files
內容是:
# xml header information and root element for the document
pattern.xml.header=<?xml version="1.0"?>\
<patternFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Patterns.xsd">
# Patterns in order to load.
pattern.filelist=\
GlobalPoints-Dashboard.xml,\
IVCompatibility.xml,\
IVCompatibilityAgent.xml,\
IVCompatibilityProduct.xml,\
TVServicesClassSearch.xml,\
TVServicesSearchMartindaleIndexNom.xml
# end element for the file
pattern.xml.trailer=</patternFile>
ANT代碼其生成我需要的是最終Patterns.xml文件:
pattern.src.dir = src/xml/patterns
pattern.schema.dir = 的src/XML /模式
pattern.xml.filename = Patterns.xml
pattern.xsd.filename = Patterns.xsd
pattern.src.xsd = SRC/XML /模式/ Patterns.xsd
pattern.output.dir = 溫度
pattern.output.file = 溫度/ Patterns.xml
pattern.properties = pattern.properties
<!-- transform the template patterns -->
<target name="templates" >
<xslt basedir="src/xml/patterns"
destdir="src/xml/patterns"
extension=".xml"
force="true"
style="src/xml/stylesheets/SearchTemplate.xsl"
includes="FOX-Tool-Active-Ingredient.template,
FOX-Tool-Product.template,
FOX-Tool-Product-Material.template">
</xslt>
</target>
<!-- create the pattern definition file by concatenating all parts -->
<target name="build-xml" depends="init,templates">
<loadproperties srcFile="${pattern.src.dir}/${pattern.properties}" />
<!-- make sure all files exist -->
<resourcecount property="fileCount">
<fileset dir="${pattern.src.dir}" includes="${pattern.filelist}" />
</resourcecount>
<fail message="Files are missing.">
<condition>
<not>
<resourcecount count="${fileCount}">
<filelist dir="${pattern.src.dir}" files="${pattern.filelist}"/>
</resourcecount>
</not>
</condition>
</fail>
<concat destfile="${pattern.output.file}">${pattern.xml.header}</concat>
<concat append="yes" destfile="${pattern.output.file}">
<filelist dir="${pattern.src.dir}" files="${pattern.filelist}"/>
</concat>
<concat append="yes" destfile="${pattern.output.file}">${pattern.xml.trailer}</concat>
<!-- copy the schema to the output directory for validation -->
<copy file="${pattern.src.xsd}"
todir="${pattern.output.dir}"
overwrite="yes"/>
<!-- validate that the combined file matches the schema -->
<schemavalidate file="${pattern.output.file}">
<schema file="${pattern.src.xsd}"
namespace="http://www.w3.org/2001/XMLSchema-instance"/>
</schemavalidate>
</target>
使用下面的搖籃代碼,我可以執行的第一塊什麼「模板」的目標是在ANT做。
// Perform XSL transformations in work directory as similar to ANT "templates" target
def performXslt() {
ant {
xslt(
basedir: "${pattern.src.dir}",
destdir: "${pattern.src.dir}",
extension: ".xml",
force: "true",
style: "src/xml/stylesheets/SearchTemplate.xsl",
includes: "*.template"
)
}
}
我可以調用上述任務,我會再寫搖籃自定義任務的dependsOn或doFirst。對於這個第二個任務,它將等同於ANT中的「build-xml」目標,我試圖與大家一起檢查 - 什麼是編碼它的有效方法。
當我在ANT中看到「build-xml」目標時,它所做的只是首先調用「template」目標,然後讀取具有3個變量的pattern.properties文件,1)頭字符串。 2).xml文件列表和3)trail/footnote字符串及其所有的「doing」將這些變量/字符串的值1(字符串)+(第2個變量中提到的所有.xml文件內容的內容)連接起來+3 (字符串)變成最後的Patterns.xml文件。最後,它將複製另一個.xsd文件放在同一個輸出文件夾中,並使用最終的Patterns.xml文件上的模式進行一些模式驗證。
有人可以幫助我在Gradle中將上述「build-xml」ANT目標登錄名編寫爲「buildXML」任務,這樣我就不會編寫2頁腳本。
謝謝。