Ответ 1
Вы можете создать задачу ant все, что зависит от всех конкретных целей, которые у вас есть...
<target name="all" depends="target1, target2, ... ">
</target>
ant all
Я хотел бы выполнить все цели вместо указания каждого из них.
Например:
<?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 файлами, поэтому было бы очень удобно иметь функцию "все".
Вы можете создать задачу ant все, что зависит от всех конкретных целей, которые у вас есть...
<target name="all" depends="target1, target2, ... ">
</target>
ant all
Вы также можете настроить задачу по умолчанию, которая будет выполняться, когда вы просто наберете ant. Атрибут по умолчанию находится в элементе проекта.
<project name="foo" default="all">
<target name="all" depends="target1, target2"/>
<target name="target1">
...
</target>
<target name="target2">
...
</target>
</project>
$ ant
Поскольку 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), чтобы предотвратить рекурсию.