2011-02-10 16 views
0

私は自分のプロジェクト用のJavaライブラリを作成しています:依存関係管理とJARのローカルリポジトリへの公開にIvyを使用します。Apache AntとIvy:間違った依存関係が生成されました

ivy.xmlを更新する(つまり、新しい外部ライブラリを追加する)と、すべての成果物がOKです。すべての成果物が取得され使用されます。

しかし、ライブラリを公開すると、Ivyで生成されたivy-module xmlには、間違った/間違った参照が含まれていることがよくあります。

これは私が私の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> 

答えて

2

おそらく、あなたに次のターゲットを追加する必要がありますあなたのビルド。

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

これはスレート清掃を行い、ビルドが完全に清潔であることを保証します。

Ivyは基本的に最適化されたダウンローダですが、依存関係の複雑なツリーのバージョンをアップグレードすると、誤ったキャッシングの決定が行われることがあります。 Mavenビルドは、ローカルリポジトリが非常に大きい場合にもこの問題の影響を受けます。

関連する問題