Различные цели для разных ОС с Ant

У меня есть цель ant, которую я не хочу вызывать, если я не запускаю ant в Linux (не вызывается в Windows)

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

Цель, которую я не хочу вызывать в Windows: compile.nic

Как я могу это сделать?

Ответ 1

Вставьте свойство if в свою цель compile.nic.

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

И используйте эти условия перед запуском вашей цели

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

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

Ответ 2

Вот пример реального мира для команд 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>

Ответ 4

Вы можете использовать условие os для установки свойства, а затем пропустить цель, добавив атрибуты if или unless (в зависимости от того, как вы определяете свое свойство)