Как получить зависимость с Айви - PullRequest
2 голосов
/ 26 июня 2009

Я проверяю использование плюща в нашем приложении. Я настроил простую конфигурацию для снятия cobertura.

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info
        organisation="com"
        module="adesa"
        status="integration">
    </info>
    <configurations>
        <conf name="runtime" description=""/>
    </configurations>
    <dependencies>
      <dependency org="cobertura" name="cobertura" rev="1.8" transitive="true"/>
    </dependencies> 
</ivy-module>

Я знаю, что у cobertura есть зависимости от других файлов jar. Так как же получить эти другие файлы JAR? Единственное, что я вижу в своей директории кеша, это файл jar cobertura.

Вот мой ivysetting.xml

<ivysettings>
<settings defaultResolver="chained" />
<resolvers>
    <chain name="chained" returnFirst="true"> 
        <url name="apache" m2compatible="true"> 
            <!--Apache -->
            <artifact pattern="http://repo1.maven.org/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
            <artifact pattern="http://people.apache.org/repo/m2-incubating-repository/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
        </url>
        <url name="jboss" m2compatible="true">  
            <!-- JBoss -->
            <artifact pattern="http://repository.jboss.com/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
        </url>

        <ibiblio name="ibiblio" m2compatible="true" /> 
        <url name="mvnrepos" m2compatible="true">
            <!-- IBIBLIO-Mirror -->
            <artifact pattern="http://mirrors.ibiblio.org/pub/mirrors/maven2/[organisation]/[module]/[branch]/[revision]/[branch]-[revision].[ext]" />
        </url>
    </chain> 
</resolvers> 

Есть ли список других репозиториев, которые можно использовать для получения зависимостей / jars?


Фрагмент из файла build.xml:

    <target name="load-ivy">
    <path id="ivy.lib.path">
        <fileset dir="${basedir}/lib" includes="*.jar"/>
    </path>
    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
</target>

<target name="ivy-init" depends="load-ivy">
    <mkdir dir="${dest.repo.dir}"/>
    <ivy:settings id="basic.settings" file="${basedir}/ivysettings.xml"/>
</target>

<target name="ivy-clean" depends="ivy-init">
    <ivy:cleancache settingsRef="basic.settings"/>
    <delete dir="${ivy.cache.dir}" failonerror="true"  />
    <delete dir="${dest.repo.dir}"/>
</target>


<target name="ivy-download" depends="ivy-clean,ivy-init">
    <ivy:retrieve  settingsRef="basic.settings" pattern="${dest.repo.dir}/[artifact]/[artifact]-[revision].[ext]" />
</target>

<target name="ivy-report" depends="ivy-download">
    <ivy:report  settingsRef="basic.settings" todir="${basedir}/logs" />
</target>

1 Ответ

5 голосов
/ 26 июня 2009

Ваш conf выглядит очень похоже на мой, за исключением того, что у меня есть другая зависимость для cobertura:

<dependency org="net.sourceforge.cobertura" name="cobertura" rev="1.9" conf="cobertura"/>

Также я предлагаю вам попробовать файл ivysettings.xml по умолчанию перед добавлением дополнительных репозиториев.


Образцы фрагментов

Разрешение пути к классу плюща:

<target name="init.deps" description="Download (if needed) and resolve the dependencies." unless="deps.init">

    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar.file}" />

    <ivy:resolve />
    <ivy:cachepath pathid="ivy.path" conf="production" />

    <property name="deps.init" value="true"/> <!-- guard against multiple ivy computations -->

</target>

Использовать путь плюща для компиляции

<target name="compile" depends="init, record-build-number">
    <javac srcdir="src" debug="true" destdir="build/classes">
        <classpath>
            <path refid="ivy.path" />
        </classpath>
    </javac>
</target>
...