我需要Apache Ant中的符号链接选择器。
核心可以使用following selectors。
有人建议我写一个<scriptselector>
只选择目录下的符号链接文件吗?或者其他任何方式?
原因:
folder
|-- file-0.0.1
|-- file-0.0.2
|-- file-0.0.3
`-- file --> file-0.0.3
我只想获得file
符号链接的文件。在这种情况下file-0.0.3
,但符号链接可以更改,我不希望所有其他文件都在Ant <fileset>
答案 0 :(得分:1)
请看一下:
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任务迭代它们,然后调用一个目标,在该目标中,您可以使用文件执行任何操作。