Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使Ant copy任务特定于操作系统吗?_Ant_Copy - Fatal编程技术网

我可以使Ant copy任务特定于操作系统吗?

我可以使Ant copy任务特定于操作系统吗?,ant,copy,Ant,Copy,我有一个Ant脚本,它使用。它是为Windows编写的,有一个硬编码的C:\path作为“todir”参数。我看到“exec”任务有一个OS参数,是否有类似的方法基于OS分支副本?您不能使用变量并根据类型分配它?您可以将其放入build.properties文件中。或者,您可以使用分配。您可以使用条件任务分支到不同的复制任务。。。从ant手册: <condition property="isMacOsButNotMacOsX"> <and> <os family

我有一个Ant脚本,它使用。它是为Windows编写的,有一个硬编码的C:\path作为“todir”参数。我看到“exec”任务有一个OS参数,是否有类似的方法基于OS分支副本?

您不能使用变量并根据类型分配它?您可以将其放入
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下被同等对待的路径吗?我只是好奇。