Ant的不同操作系统上的不同目标

时间:2010-12-23 16:26:55

标签: ant

除非我在Linux上运行ant(不在Windows上调用),否则我有一个我不想调用的目标

<target name="jar.all" depends="clean,compile.nic,jar,jar.resources"/>

我不希望在Windows上调用的目标是: compile.nic

我该怎么做?

4 个答案:

答案 0 :(得分:15)

将if属性插入compile.nic目标。

<target name="compile.nic" if="windowsos">

在运行目标之前使用此条件

<condition property="windowsos">
  <os family="windows" />
</condition>

<condition property="linuxos">
  <os family="unix" />
</condition>

答案 1 :(得分:10)

这是Windows与UNIX命令的真实示例。 ELSE改进了以前的答案。

<condition property="maven.executable" value="mvn.bat" else="mvn">
  <os family="windows" />
</condition>

<target name="clean">
  <exec executable="${maven.executable}">
    <arg value="clean" />
  </exec>
</target>

答案 2 :(得分:7)

Can I make the Ant copy task OS-specific?

此外,某些任务支持os属性。例如exec:

<exec executable="cmd" os="windows"/>

答案 3 :(得分:1)

您可以使用os条件设置属性,然后通过添加ifunless属性(取决于您如何定义属性)跳过目标