Как я могу передать две переменные в одну цель Ant, разделив запятые - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть один deploy.path1=A,B,C,D,E и deploy.path2=1,2,3,4, и я хочу использовать A и 1 в одной цели Deploy, как показано ниже, например, в одно время означает, что оба должны быть доступны одновременно, как A, 1, затем в следующий раз B, 2 и и так далее ...

<target name"deploy">
<echo message="${A}"/>
<echo message="${1}"/>
</target>

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

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

<foreach list="${deploy.loc2}" param="deploy_javapass" target="copy_patch_javapass" delimiter="," inheritall="true" inheritrefs="true" 
    parallel="false" trim="true"/> 

задача, но таким образом мы можем передать только один параметр за один раз.

1 Ответ

1 голос
/ 03 февраля 2012

Я редко использую задачи 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...