我可以使Ant copy任务特定于操作系统吗?
我有一个Ant脚本,它使用。它是为Windows编写的,有一个硬编码的C:\path作为“todir”参数。我看到“exec”任务有一个OS参数,是否有类似的方法基于OS分支副本?您不能使用变量并根据类型分配它?您可以将其放入我可以使Ant copy任务特定于操作系统吗?,ant,copy,Ant,Copy,我有一个Ant脚本,它使用。它是为Windows编写的,有一个硬编码的C:\path作为“todir”参数。我看到“exec”任务有一个OS参数,是否有类似的方法基于OS分支副本?您不能使用变量并根据类型分配它?您可以将其放入build.properties文件中。或者,您可以使用分配。您可以使用条件任务分支到不同的复制任务。。。从ant手册: <condition property="isMacOsButNotMacOsX"> <and> <os family
build.properties
文件中。或者,您可以使用分配。您可以使用条件任务分支到不同的复制任务。。。从ant手册:
<condition property="isMacOsButNotMacOsX">
<and>
<os family="mac"/>
<not>
<os family="unix"/>
</not>
</and>
声明一个变量,该变量是操作的根文件夹。在文件夹前面加上该变量,包括在复制任务中
使用条件设置基于操作系统的变量,或将其作为参数传递给Ant脚本。我建议将路径放入属性中,然后根据当前操作系统有条件地设置属性
<condition property="foo.path" value="C:\Foo\Dir">
<os family="windows"/>
</condition>
<condition property="foo.path" value="/home/foo/dir">
<os family="unix"/>
</condition>
<fail unless="foo.path">No foo.path set for this OS!</fail>
没有为此操作系统设置foo.path!
另一个好处是,一旦它位于属性中,您就可以重写它,而无需编辑Ant脚本。之前发布的操作系统特定变量的建议将起作用,但很多时候,您只需省略“C:”前缀并使用前向斜杠(Unix样式)文件路径,即可在Windows和Unix系统上工作 因此,如果要将文件复制到Windows上的“C:/tmp”和Unix上的“/tmp”,可以使用以下方法:
<copy todir="/tmp" overwrite="true" >
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
如果您确实希望/需要基于操作系统设置条件路径,可以简化为:
<condition property="root.drive" value="C:/" else="/">
<os family="windows" />
</condition>
<copy todir="${root.drive}tmp" overwrite="true" >
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
Ant contrib有此任务。这将向属性(指定其名称)公开操作系统系列。这可能会有一些好处。难道没有一种方法可以在Ant中声明一个在Windows和Linux下被同等对待的路径吗?我只是好奇。