Apache Ant & Ivy: сгенерированы неправильные зависимости - PullRequest
0 голосов
/ 10 февраля 2011

Я пишу библиотеку Java для своего проекта: я использую Ivy для управления зависимостями и публикации JAR в моем локальном хранилище.

Когда я обновляю ivy.xml (т.е. добавляю новую внешнюю библиотеку), все в порядке: все артефакты извлекаются и используются.

Однако, когда я публикую свою библиотеку, xml-модуль ivy, сгенерированный Ivy, содержит отсутствующие / неправильные ссылки (часто на предыдущие версии внешних библиотек).

Это моя цель в build.xml:

    <target name="publish" depends="jar" description="Publish this project in the ivy repository">
    <property name="revision" value="${version}" />
    <ivy:publish artifactspattern="${jar.dir}/[artifact].[ext]" resolver="projects" pubrevision="${revision}" status="release" update="true" overwrite="true" />
    <echo message="project ${ant.project.name} released with version ${revision}" />
</target>

А это мой ivy.xml:

<ivy-module version="2.0">
<info organisation="xyz" module="zyx"/>
<configurations defaultconfmapping="*->*,!javadoc,!sources" />
<dependencies>
    <dependency org="ch.qos.logback" name="logback-classic" rev="0.9.28" /> 
    <dependency org="commons-lang" name="commons-lang" rev="2.5"/>
    <dependency org="commons-io" name="commons-io" rev="2.0"/>
    <dependency org="org.simpleframework" name="simple-xml" rev="2.4.1">
        <exclude module="stax"/>
        <exclude module="stax-api"/>
    </dependency>
    <dependency name="AlmaUtils" rev="1.3.10"/>
    <!-- Reflections -->
    <dependency org="org.reflections" name="reflections" rev="0.9.5-RC2">
        <exclude module="logback-classic"/>
    </dependency>
    <!-- Bouncycastle cryptography -->
    <dependency org="org.bouncycastle" name="bcprov-ext-jdk16" rev="1.45"/>
    <dependency org="jdom" name="jdom" rev="1.1">
        <exclude module="xerces"/>
        <exclude module="xalan"/>
    </dependency>
    <!-- Scripting -->
    <dependency name="js-engine" rev="1.0"/>
    <dependency org="rhino" name="js" rev="1.7R2"/>
    <!-- JGA -->
    <dependency name="jga" rev="0.8.1"/>
</dependencies>

1 Ответ

2 голосов
/ 11 февраля 2011

Возможно, вам следует добавить следующую цель в вашу сборку.

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

Это очистит сланец и обеспечит полную чистоту вашей сборки.

Ivy в основном оптимизированный загрузчик, однако иногда он может принимать неверные решения по кэшированию при обновлении версии сложного дерева зависимостей. Сборки Maven также подвержены этой проблеме, когда локальный репозиторий очень большой.

...