2008-09-17 58 views

回答

31

我会建议把路径放在属性中,然后根据当前操作系统有条件地设置属性。

<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> 

作为一个好处,一旦它在属性中,您可以在不编辑Ant脚本的情况下覆盖它。

+0

没有办法在Ant中声明一个在Windows和Linux下一视同仁的路径吗?我只是好奇。 – 2009-06-23 22:03:32

1

你不能使用一个变量并根据类型进行赋值吗?你可以把它放在一个build.properties文件中。或者您可以使用condition进行分配。

2

你可以使用条件的任务转移到不同的副本任务......从蚂蚁手册:

<condition property="isMacOsButNotMacOsX"> 
<and> 
    <os family="mac"/> 

    <not> 
    <os family="unix"/> 

    </not> 
</and> 

1

声明一个变量,它是你的操作的根文件夹。用该变量前缀文件夹,包括复制任务。

使用条件设置基于OS的变量,或将其作为参数传递给Ant脚本。

6

之前发布的操作系统特定变量的建议可行,但很多时候您可以简单地省略“C:”前缀并使用正斜杠(Unix样式)文件路径,它可以在Windows和Unix系统上运行。

所以,如果你想将文件复制到“C:/ tmp目录”在Windows和“/ tmp目录”在Unix上,你可以使用类似:

<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> 
0

蚁的contrib具有< osfamily/>任务:基于OS条件的路径,它可以作为被简化。这会将操作系统的系列公开给一个属性(您指定的名称)。这可能有一些好处。

相关问题