apache ant:从文件导入文件列表并在应用任务中使用它

时间:2016-05-04 15:02:01

标签: java ant

我正在尝试将外部文件列表导入到我的ant构建脚本中,并在应用任务期间使用它。

listoffiles:

<filelist id="myfiles" dir=".">
    <file name="file1" />
    <file name="file2" />
</filelist>

的build.xml:

<target name="build">
    <property file="listoffiles"/>

    <apply executable="cat" parallel="false">
        <srcfile/>
        <filelist id="${myfiles}" />
    </apply>
</target>

我不确定这是否有效。在教程中,我读到property用于导入属性,filelist定义为datatype。我还尝试在filelist内定义build.xml并使用上面的代码引用它...也没有成功。

希望有人可以帮助我!

感谢aronadaal

P.S:有没有办法打印文件列表的内容?仅用于调试目的。

2 个答案:

答案 0 :(得分:1)

您希望在使用refid而不是filelist时使用id,而不是像属性一样使用id,即

<apply executable="cat" parallel="false">
    <srcfile/>
    <filelist refid="myfiles" />
</apply>

您可以使用${toString:myfiles}打印参考值 - 请参阅http://ant.apache.org/manual/properties.html#toString

已编辑回答resourcelist后续回答问题

resourcelist是一个资源集合,由名称已从文件中读取的资源组成。像https://stackoverflow.com/a/37132426/4524982这样的东西应该可以用

<xslt-saxon ...>
  <resourcelist>
    <file file="includes"/>
  </resourcelist>
</xslt-saxon>

如果(且仅当)xslt-saxon任务支持嵌套资源集合时才有效。

答案 1 :(得分:0)

我试了ant-contrib,找到了以下工作解决方案。

&#39;的示例内容包括&#39;:

path1/file1
path2/file2
path2/file3

目标来自build.xml

<target name="build-xml" depends="get-xml-files">
    <loadfile property="file" srcfile="includes"/>
    <for param="line" list="${file}" delimiter="${line.separator}">
        <sequential>
            <xslt-saxon in="@{line}.xml" out="@{line}.xml" style="tranform.xsl"/>
        </sequential>
    </for>
</target>

专业人士:类似脚本,易于实施

缺点:其他依赖关系,而非 - ant - 喜欢

因此,对于您的提案resourcelist,我会强调如何引用我saxon - 调用中读取的行。 ant-contrib使用{@ {line}&#39;。

对于所有这些问题感到抱歉......但ant手册对初学者并没有多大帮助。

您有ant的任何图书推荐吗?

感谢aronadaal