我如何使用ant构建文件获得当前文件名



我最近创建了一个ANT构建文件,使用xslt将.xml文件转换为。fo。ANT构建按照设计执行。但是,输入文件是硬编码到XSLT任务中的。

如何动态更改输入文件名,而不必每次编辑构建文件?下面是我的代码片段:

<target name="createFO"
    description="Transform using XSLT 1.0" depends="clean, copyimg, copysrc">
      <xslt basedir="${srcdir}" 
            destdir="${dstDir}"
            extension=".fo"
            style="${ss}/foobar.xsl"
            in="sample.xml"
            out="${dstDir}/new.fo"/>   
      <echo>The fo file has been created!</echo>
</target>

我没有提到我正在使用OxygenXML来处理我的ANT文件。对不起。

您不需要inout属性。相反,您可以使用包含要转换的文件的<fileset>

<xslt>将从您的输入文件中删除后缀,并应用extension属性中使用的后缀。

<target name="createFO"
    description="Transform using XSLT 1.0" depends="clean, copyimg, copysrc">
    <!-- Don't put "basedir" parameter. It comes from fileset! -->
      <xslt destdir="${dstDir}"
            extension=".fo"
            style="${ss}/foobar.xsl">
            <fileset dir="${xslt.dir}"/>
      </xslt>
      <echo>The fo file has been created!</echo>
</target>

您也可以使用映射器将输入文件名转换为输出文件名。

另一种当然是使用属性作为输入文件名,然后让某人将文件名传递到Ant脚本中:
<target name="createFO"
    description="Transform using XSLT 1.0" depends="clean, copyimg, copysrc">
      <fail message="You must pass in the parameter &auot;-Dxml.file=...&quot;">
           <condition>
               <not>
                   <available file="${xml.file}">
           </condition>
      </fail>
      <xslt basedir="${srcdir}" 
            destdir="${dstDir}"
            extension=".fo"
            style="${ss}/foobar.xsl"
            in="${xml.file}"
            out="${dstDir}/new.fo"/>   
      <echo>The fo file has been created!</echo>
</target>

现在,要运行这个,你可以这样做:

$ ant -Dxml.file=sample.xml createFO

相关内容

  • 没有找到相关文章

最新更新