【发布时间】:2014-11-04 00:30:02
【问题描述】:
我最近更新了我的项目结构以使用 IVY:Extends 功能,其中我声明了一个父级 (common-ivy.xml) 并在所有项目中扩展它(我有大约 120 个项目使用它)。我通过使用该线程IVY Extends via ivy:resolve 中的技术来实现这一点。
现在的问题是,在采用这种结构后,我失去了项目之间的依赖关系,这是必不可少的,现在它破坏了一切。例如见下文;
common-ivy.xml
<?xml-stylesheet type="text/xsl" href="http://repository.temenosgroup.com/xsl/version-doc.xsl"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="xyz" branch="15" module="CommonDependency" revision="1.0.0" />
<configurations defaultconfmapping="test->test(*);compile->compile(*)">
<conf name="test" description="Test Time dependencies"/>
<conf name="compile" description="Compile Time dependencies"/>
</configurations>
<dependencies>
<dependency org="junit" name="junit" rev="4.8.2" conf="compile,test"/>
</dependencies>
</ivy-module>
ProjectZ ivy.xml 扩展通用但没有定义任何额外的依赖
<?xml-stylesheet type="text/xsl" href="http://repository.temenosgroup.com/xsl/version-doc.xsl"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info module="ProjectZ" >
<extends extendType="all"
organisation="xyz"
module="CommonDependency"
revision="1.0.0"
location="../parent/common-ivy.xml" />
</info>
<dependencies />
</ivy-module>
ProjectA ivy.xml 扩展了 common 并定义了它对 ProjectZ 的依赖
<?xml-stylesheet type="text/xsl" href="http://repository.temenosgroup.com/xsl/version-doc.xsl"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info module="ProjectA" >
<extends extendType="all"
organisation="xyz"
module="CommonDependency"
revision="1.0.0"
location="../parent/common-ivy.xml" />
</info>
<dependencies>
<dependency org="xyz" name="ProjectZ" branch="15" rev="latest-dev" conf="compile,test"/>
</dependencies>
</ivy-module>
当我将此列表传递给ivy:buildlist 时,它的返回顺序如下;
ProjectA, ProjectZ
它应该返回的不正确;
ProjectZ, ProjectA
我正在使用 IVY 2.3.0。这是 IVY 中的错误还是我遗漏了什么?
【问题讨论】:
-
您的扩展声明不应该包含 branch="15" 以正确引用 common-ivy.xml 吗?
-
extends 不支持
branch属性,它将直接从每个项目的 common-ivy.xml 中使用。问题出在 Dependencies 中,ProjectA 声明了它对 ProjectZ 的依赖,但 IVY 无法识别它
标签: dependencies ivy extends