我最近更新了我的项目结构以使用IVY:扩展功能,我宣布了一个父(common-ivy.xml)并在所有项目中扩展它(我有大约120个项目使用它)。我通过使用此线程IVY Extends via ivy:resolve中的技术实现了这一点。
现在的问题是,在采用这种结构后,我已经失去了必不可少的项目与现在打破一切的项目之间的依赖关系。例如见下文;
共的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 扩展常见以及定义其对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
INCORRECT 它应该已经返回;
ProjectZ, ProjectA
我正在使用IVY 2.3.0。这是IVY中的错误还是我错过了什么?
答案 0 :(得分:1)
好的,我必须调试IVY :(解决这个问题,发现依赖项的rev
和common-ivy.xml导致问题。调试时我找到了两个解决方案; < / p>
1)在依赖关系定义中使用rev =“+”并让IVY解析可用的内容
2)从common-ivy.xml中删除revision="1.0.0"
因为extends
而继承它,因此IVY无法匹配latest-dev == 1.0.0,一旦从普通中删除-ivy.xml我的项目正在运行@ HostName,由IVY正确解析
我选择了选项2,因为它需要在单个文件中进行更改,并且无论如何都不在我的工作空间中使用属性。