我需要一个Apache Ant中的符号链接选择器。
以下选择器可用于核心。
谁能建议我写一个<scriptselector>
只选择一个目录下的符号链接文件?或者其他方式?
的原因:
folder
|-- file-0.0.1
|-- file-0.0.2
|-- file-0.0.3
`-- file --> file-0.0.3
我只想得到由file
符号链接的文件。在这种情况下,file-0.0.3
,但符号链接可以改变,我不希望所有其他文件都在蚂蚁<fileset>
请看:
http://ant.apache.org/manual/Tasks/symlink.html我现在没有linux机器可以测试,但是我想可以这样做:
<symlink action="record" linkfilename="my.links">
<fileset dir="${my.folder}" includes="*"/>
</symlink>
你应该能够将你的符号链接记录到一个文件中,然后按照你的意愿处理这些文件。例如,您可以只使用"符号链接"文件创建一个列表,并遍历它来做您想做的事情。
编辑:
对于这个解决方案,您需要安装ant-contrib。只需将ant-contrib-1.0b3.jar解压缩到ant/lib目录。然后使用以下build.xml文件:<project name="test" default="build">
<!--Needed for antcontrib-->
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
<target name="build">
<property name="my.dir" value="/home/stefanos"/>
<exec executable="bash" outputproperty="symlinks" dir="${my.dir}">
<arg value="-c"/>
<arg value="ls -1 | xargs -l readlink"/>
</exec>
<foreach list="${symlinks}" delimiter="${line.separator}" param="link" target="process.link"/>
</target>
<target name="process.link">
<!--Do whatever you want with the file targeted by the symlink-->
<echo message="Processing link : ${link}"/>
</target>
</project>
诀窍是linux命令,它从符号链接返回所有目标文件。然后,您只需使用foreach任务遍历它们并调用一个目标,您可以在其中对文件执行任何需要的操作。