题
我有一只蚂蚁脚本,执行一个副作用 "复制"的任务.这是为Windows编写,并有一个硬编C:\path为'todir'的论点。我看到了'执行'的任务具有操作系统的参数,是否有一个类似方法分支的副本基础的操作系统?
解决方案
我将建议把该路径中的财产,然后设定的财产有条件地根据当前的操作系统。
<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>
作为一个方面的利益,一旦它是在一个酒店你可以替代它没有编辑的蚂蚁脚本。
其他提示
先前发布的建议的操作系统的具体变量会的工作,但很多时候你可以简单地省略"C:"前缀和使用斜杠(Unix style)文件的路径,并将工作在这两个窗口和Unix系统。
所以,如果你想要复制的文件"C:/tmp"在窗户和"/tmp"on 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>
你可以使用的条件的任务转到不同的复制任务...从蚂蚁手册:
<condition property="isMacOsButNotMacOsX">
<and>
<os family="mac"/>
<not>
<os family="unix"/>
</not>
</and>
声明一个变量,是根文件夹你的操作。前缀的文件夹中的那个变量,包括复制任务。
设置可变的基础的操作系统使用一个有条件的,或通过它作为一个参数的蚂蚁脚本。
你不能用一个变量,并将其分配根据的类型?你可以把它放在一个 build.properties
文件。或者你可以把它分配使用 条件.
蚂蚁-神奇的 <osfamily /> 任务。这将会使家庭的操作系统的一个酒店(指定名称)。这可能是一些利益。
不隶属于 StackOverflow