Apache Ant 和 Ivy:生成了错误的依赖项
Posted
技术标签:
【中文标题】Apache Ant 和 Ivy:生成了错误的依赖项【英文标题】:Apache Ant & Ivy: wrong dependencies generated 【发布时间】:2011-06-24 19:52:18 【问题描述】:我正在为我的项目编写一个 Java 库:我使用 Ivy 进行依赖项管理并将 JAR 发布到我的本地存储库。
当我更新 ivy.xml(即添加新的外部库)时,一切正常:检索并使用所有工件。
但是,当我发布我的库时,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>
【问题讨论】:
【参考方案1】:也许您应该将以下目标添加到您的构建中。
<target name="clean-all" depends="clean" description="Purge ivy cache">
<ivy:cleancache/>
</target>
这将清除板岩并确保您的构建完全干净。
Ivy 基本上是一个优化的下载器,但是,当您升级复杂的依赖树的版本时,它有时会做出错误的缓存决策。当本地存储库非常大时,Maven 构建也会受到此问题的影响。
【讨论】:
以上是关于Apache Ant 和 Ivy:生成了错误的依赖项的主要内容,如果未能解决你的问题,请参考以下文章