如何以编程方式连接ANT?
让我先说一句,我是ant的新手,如果重要的话,我使用的是1.6.5版 我有一个包含要连接的文件列表的文件。我第一次尝试的相关部分是:如何以编程方式连接ANT?,ant,build-process,concatenation,Ant,Build Process,Concatenation,让我先说一句,我是ant的新手,如果重要的话,我使用的是1.6.5版 我有一个包含要连接的文件列表的文件。我第一次尝试的相关部分是: <target name="for-each"> <xmlproperty file="scripts.xml" collapseAttributes="true" /> <echo message="testing for-each"/> <concat destfile="${out}" fix
<target name="for-each">
<xmlproperty file="scripts.xml" collapseAttributes="true" />
<echo message="testing for-each"/>
<concat destfile="${out}" fixlastline="yes" eol="lf">
<foreach list="${scripts.src}" target="loop" param="var" delimiter=","/>
</concat>
</target>
<target name="loop">
<echo message="File :: ${var}"/>
<fileset file="${SRC_DIR}${var}" />
</target>
但是,concat不支持foreach元素
我不想简单地将一个文件集剪切并粘贴到concat元素中,因为它是重复使用的,并且可能会在原始文件中经常更改,所以我希望通过编程迭代文件中列出的脚本元素
正确的语法是什么?我将如何实现这一点?我认为您的要求是:
- 从另一个xml文件加载文件列表
- 将此文件列表合并在一起
文件1
文件2
build.xml
是这样吗?像这样的东西可能有用(没有尝试过)
此解决方案使用的是Ant 1.8.1--我试图找出如何按特定顺序压缩多个文件--似乎唯一的方法是使用文件列表。以下是我的想法: 给定一个包含文件名列表的文件:
files.list:
-------------
file1.txt
file2.txt
file3.txt
将此文件加载到ant属性中,并使用filterchain将行后缀为“,”并删除任何换行符:
<!-- put list in format for filelist element -->
<loadfile property="file.includes" srcFile="files.list">
<filterchain>
<suffixlines suffix=", "/>
<striplinebreaks/>
</filterchain>
</loadfile>
这将把以下值放入${file.includes}属性:“file1.txt、file2.txt、file3.txt”。此字符串的格式正确,现在可以在filelist元素中使用,因此您可以使用filelist和${file.includes}属性:
<concat destfile="${dest.file}" fixlastline="yes">
<filelist dir="${basedir}" files="${file.includes}"/>
</concat>
希望这对某人有帮助。嗯。。。我希望它会像这样简单,但根据,文件是一个文件名列表,用空格或逗号分隔。因此,我的scripts.xml文件必须将该列表放在某个地方的单个属性值中,或者作为单个逗号分隔的子项,对吗?我想我是在问,我对文件集的使用是否比看起来更灵活,或者我是否必须有一个符合文件列表要求的XML文件?文件集主要由排除定义,文件列表由包含定义。如果你有一个简短的文件列表,我会坚持使用文件列表。否则,如果您的文件遵循某种模式或可能有很多,请仔细创建一个文件集,以选择正确的文件。我很确定如果
运行到:它将把值包含到一个属性${List.Item}中。这可能就是你想要的。+1,我会试试看,看看我能做些什么,但你肯定让我更接近一个解决方案。没问题。蚂蚁只能做这么多。对于我的一些更大的ANT进程,我用python编写模块来完成更难的工作,并从ANT启动它。谢谢,不过如果您稍微更改一下filterchain,只需使用一个“”。此解决方案还有一个好处,即根据文件的列出顺序包含这些文件。
files.list:
-------------
file1.txt
file2.txt
file3.txt
<!-- put list in format for filelist element -->
<loadfile property="file.includes" srcFile="files.list">
<filterchain>
<suffixlines suffix=", "/>
<striplinebreaks/>
</filterchain>
</loadfile>
<concat destfile="${dest.file}" fixlastline="yes">
<filelist dir="${basedir}" files="${file.includes}"/>
</concat>