Как получить и использовать файл Apache Ivy.jar из моего проекта, не имея его в папке .ant? - PullRequest
2 голосов
/ 02 сентября 2011

На данный момент у меня есть эта конфигурация:

build.xml:

<!-- Ivy settings start-->

    <condition property="ivy.home" value="${env.IVY_HOME}">
        <isset property="env.IVY_HOME" />
    </condition>


    <target name="download-ivy" unless="offline" description="Download Ivy">
        <mkdir dir="${ivy.jar.dir}"/>
            <!-- download Ivy from web site so that it can be used even without any special installation -->
        <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" 
            dest="${ivy.jar.file}" usetimestamp="true"/>
    </target>


    <target name="init-ivy" depends="download-ivy" description="Initialize Ivy">
        <!-- try to load ivy here from ivy home, in case the user has not already dropped
        it into ant's lib dir (note that the latter copy will always take precedence).
        We will not fail as long as local lib dir exists (it may be empty) and
        ivy is in at least one of ant's lib dir or the local lib dir. -->
        <path id="ivy.lib.path">
            <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
        </path>
        <taskdef resource="org/apache/ivy/ant/antlib.xml"
        uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
    </target>

    <target name="update" depends="init-ivy" description="Download project dependencies">
        <!-- edited for brevity -->

        <ivy:retrieve pattern="war/WEB-INF/lib/[artifact]-[revision].[ext]" />
        <!-- edited for brevity -->
    </target>


    <target name="clean-all" depends="clean" description="Purge ivy cache">
        <ivy:cleancache/>
    </target>

<!-- Ivy settings end-->

build.properties:

ivy.install.version=2.2.0
ivy.home=${user.home}/.ant
ivy.jar.dir=${ivy.home}/lib
ivy.jar.file=${ivy.jar.dir}/ivy-${ivy.install.version}.jar

ivy.xml:

<ivy-module version="2.0">
    <info organisation="org.apache" module="hello-ivy"/>
    <dependencies>
        <dependency org="commons-lang" name="commons-lang" rev="2.1" conf="default->master"/>

    </dependencies>
</ivy-module>

Это означает, что Ivy будет загружен на мой ${user.home}/.ant/lib и будет использоваться оттуда.

Как я могу загрузить его в библиотеку моего проекта (например, war / WEB-INF / lib) и использовать его оттуда, чтобы все мои файлы были вместе, а не разбросаны по моему компьютеру?

1 Ответ

4 голосов
/ 05 сентября 2011

Ivy - это плагин для ANT.

Использование альтернативного каталога возможно, однако вам нужно будет запустить ANT следующим образом, чтобы ANT поднял банку плюща с альтернативного места загрузки.

ant -lib $APP_DIR/lib .....

Подробнее о том, как ANT управляет библиотеками плагинов, см. В руководстве ANT .

Дополнительные примечания:

Ivy хранит кэш загруженных файлов в следующих файлах:каталог $ HOME / .ivy2 / cache .Альтернативные местоположения для этого каталога могут быть указаны с помощью директивы caches в вашем файле настроек ivy.

...