Java, использование Ant с проблемами Apache Ivy - PullRequest
1 голос
/ 01 сентября 2011

Я использовал ANT для развертывания своих вещей в Tomcat. Но у меня были проблемы с отсутствующими зависимостями, и я хотел добавить Ivy, потому что это было рекомендовано.

Теперь я добавил это в свой файл 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">
        <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">
        <!-- 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="go" depends="init-ivy" description="--> resolve dependencies, compile and run the project">
    <echo message="using ivy to resolve commons-lang 2.1..."/>
    <!--
    here comes the magic line: asks ivy to resolve a dependency on commons-lang 2.1 and to build an ant path with it from its cache
    -->
    <ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" pathid="lib.path.id" inline="true"/>
    </target>
<!-- Ivy settings end-->

С этим я пытаюсь добавить JAR-файл общего языка в мой проект. Вот что я получаю в качестве вывода:

    Buildfile: C:\Users\Jansu\workspace\HelloWorld\build.xml
build:
deploywar:
download-ivy:
      [get] Getting: http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar
      [get] To: C:\Users\Jansu\.ant\lib\ivy-2.2.0.jar
      [get] Not modified - so not downloaded
init-ivy:
go:
     [echo] using ivy to resolve commons-lang 2.1...
[ivy:cachepath] :: Ivy 2.2.0 - 20100923230623 :: http://ant.apache.org/ivy/ ::
[ivy:cachepath] :: loading settings :: url = jar:file:/C:/Users/Jansu/.ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:cachepath] :: resolving dependencies :: commons-lang#commons-lang-caller;working
[ivy:cachepath]     confs: [default, master, compile, provided, runtime, system, sources, javadoc, optional]
[ivy:cachepath]     found commons-lang#commons-lang;2.1 in public
[ivy:cachepath] :: resolution report :: resolve 151ms :: artifacts dl 10ms
    ---------------------------------------------------------------------
    |                  |            modules            ||   artifacts   |
    |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
    ---------------------------------------------------------------------
    |      default     |   1   |   0   |   0   |   0   ||   1   |   0   |
    |      master      |   1   |   0   |   0   |   0   ||   1   |   0   |
    |      compile     |   1   |   0   |   0   |   0   ||   0   |   0   |
    |     provided     |   1   |   0   |   0   |   0   ||   0   |   0   |
    |      runtime     |   1   |   0   |   0   |   0   ||   0   |   0   |
    |      system      |   1   |   0   |   0   |   0   ||   0   |   0   |
    |      sources     |   1   |   0   |   0   |   0   ||   1   |   0   |
    |      javadoc     |   1   |   0   |   0   |   0   ||   1   |   0   |
    |     optional     |   1   |   0   |   0   |   0   ||   0   |   0   |
    ---------------------------------------------------------------------
BUILD SUCCESSFUL
Total time: 2 seconds

Я думаю, это работает .. сейчас 2 вопроса:

1) где эти JAR-файлы появляются в моем проекте?

2) как добавить другие файлы JAR, такие как файлы среды Spring?

1 Ответ

1 голос
/ 02 сентября 2011

Это:

<ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" pathid="lib.path.id" inline="true"/>
</target>

называется встроенным извлечением и говорит Айви построить ant-path с pathid="lib.path.id" из кэша плюща, банки не будут скопированы на вашпроект.Кэш находится в $ {user.home} /. Ivy2.

Если вы хотите загрузить артефакты в свой проект, вам нужно будет использовать задачу retrieve и определить ivy.xml для вашего проекта.

...