Подтвердить что ты не робот

Как запустить все цели в файле Ant buildfile?

Я хотел бы выполнить все цели вместо указания каждого из них.

Например:

<?xml version="1.0"?>
<project name="Kte" default="all" basedir="/home/Kte">

    <target name="target1">
    </target>

    <target name="target2">
    </target>
</project>

В настоящее время я использую:

$ ant target1
$ ant target2

Я бы хотел использовать:

$ ant

и у вас есть две цели: это реальный пример. Реальность У меня есть давно изменяющийся файл сборки Ant с под ant файлами, поэтому было бы очень удобно иметь функцию "все".

4b9b3361

Ответ 1

Вы можете создать задачу ant все, что зависит от всех конкретных целей, которые у вас есть...

<target name="all" depends="target1, target2, ... ">
</target>

ant all

Ответ 2

Вы также можете настроить задачу по умолчанию, которая будет выполняться, когда вы просто наберете ant. Атрибут по умолчанию находится в элементе проекта.

<project name="foo" default="all">
  <target name="all" depends="target1, target2"/>
  <target name="target1">
   ...
  </target>
  <target name="target2">
   ...
  </target>
</project>

$ ant

Ответ 3

Поскольку Ant является декларативным, он не делает такого рода вещи красиво. Однако вы можете рассмотреть script задачу.

Ant buildfiles имеют неявную неидентифицированную цель, которая "удерживает" все задачи, которые не являются частью названных целей. Таким образом, это, расположенный на верхнем уровне, будет делать то, что вы описываете.

<script language="javascript"><![CDATA[
    importClass( java.util.Vector );

    vec = new Vector( project.getTargets().keySet() );
    vec.setSize( vec.size( ) - 1 );
    project.executeTargets( vec );
]]>
</script>

(Неявная цель отображается в конце списка, поэтому настройка размера предотвращает рекурсию.)

Если вы помещаете этот script в цель "бегун", которая будет выполнять все остальные цели в файле сборки, вам нужно будет удалить "бегун" из вектора (и неявного target-with-no-name), чтобы предотвратить рекурсию.