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

mai*_*rgs 11 ant

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

<target name="jar.all" depends="clean,compile.nic,jar,jar.resources"/>
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能做到这一点?

小智 15

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

<target name="compile.nic" if="windowsos">
Run Code Online (Sandbox Code Playgroud)

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

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

<condition property="linuxos">
  <os family="unix" />
</condition>
Run Code Online (Sandbox Code Playgroud)


小智 11

这是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>
Run Code Online (Sandbox Code Playgroud)


Ale*_*exR 7

我可以将Ant复制任务特定于操作系统吗?

另外一些任务支持os属性.例如exec:

<exec executable="cmd" os="windows"/>
Run Code Online (Sandbox Code Playgroud)

  • 在 Ant 1.7 及更高版本中,exec 支持更通用的“osfamily”属性。 (2认同)