【问题标题】:IVY Extends Loses Dependency DeclarationIVY 延长损失依赖声明
【发布时间】: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


【解决方案1】:

好的,我不得不调试 IVY :( 来解决这个问题,并发现依赖项的 rev 以及 common-ivy.xml 导致了问题。在调试时我找到了两个解决方案;

1) 在依赖定义中使用 rev="+" 并让 IVY 解决任何可用的问题

2) 从 common-ivy.xml 中删除 revision="1.0.0",因为它是由于 extends 而继承的,因此一旦从 common-ivy.xml 中删除,IVY 无法匹配 latest-dev==1.0.0我的项目变为working@HostName,IVY 正确解决了这个问题

我选择了选项 2,因为它需要在单个文件中进行更改,而且我的工作空间中并没有使用属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 2012-02-03
    • 2011-11-13
    • 2013-02-15
    • 1970-01-01
    • 2010-12-17
    • 2019-06-30
    • 2013-09-08
    相关资源
    最近更新 更多