Я редко использую задачи ant-contrib .Если вам нужна сложная логика, я бы предложил встроить надлежащий язык сценариев, например, groovy task .
. В следующем примере задача «deploy» вызывается описанным вами способом.:
<project name="demo" default="run">
<property name="deploy.path1" value="A,B,C,D,E"/>
<property name="deploy.path2" value="1,2,3,4,5"/>
<target name="run">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy">
<classpath>
<pathelement location="/path/to/groovy/jar/groovy-all-1.8.5.jar"/>
</classpath>
</taskdef>
<groovy>
def values1 = properties."deploy.path1".split(",")
def values2 = properties."deploy.path2".split(",")
values1.eachWithIndex { value1, i ->
properties.val1 = value1
properties.val2 = values2[i]
ant.project.executeTarget('deploy')
}
</groovy>
</target>
<target name="deploy">
<echo message="path1 = ${val1}"/>
<echo message="path2 = ${val2}"/>
</target>
</project>
Усовершенствованный пример использования ivy для управления сторонними банками
Для новых установок ANT я добавил дополнительную цель в файл сборки:
$ ant install-ivy
Это настроит ivy, загрузив jar задачи ivy.
Использование ivy для одной задачи ANT является чрезмерным уничтожением.Однако это более чем окупается, когда вы используете его для управления различными путями классов.
Maven central имеет широкий спектр библиотек с открытым исходным кодом, доступных для скачивания:
http://search.maven.org/
build.xml
<project name="demo" default="run" xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="deploy.path1" value="A,B,C,D,E"/>
<property name="deploy.path2" value="1,2,3,4,5"/>
<target name="install-ivy">
<mkdir dir="${user.home}/.ant/lib"/>
<get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar"/>
</target>
<target name="init">
<ivy:resolve/>
<ivy:cachepath pathid="build.path" conf="build"/>
</target>
<target name="run" depends="init">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
<groovy>
def values1 = properties."deploy.path1".split(",")
def values2 = properties."deploy.path2".split(",")
values1.eachWithIndex { value1, i ->
properties.val1 = value1
properties.val2 = values2[i]
ant.project.executeTarget('deploy')
}
</groovy>
</target>
<target name="deploy">
<echo message="path1 = ${val1}"/>
<echo message="path2 = ${val2}"/>
</target>
</project>
ivy.xml:
файл ivy, в котором перечислены зависимости сборки:
<ivy-module version="2.0">
<info organisation="myorg" module="mymodule" />
<configurations>
<conf name="build" description="Build dependencies"/>
</configurations>
<dependencies>
<dependency org="org.codehaus.groovy" name="groovy-all" rev="1.8.5" conf="build->default"/>
</dependencies>
</ivy-module>