我正在尝试将外部文件列表导入到我的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:有没有办法打印文件列表的内容?仅用于调试目的。
答案 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