2014-09-10 68 views
1

我最近更新了我的項目結構以使用IVY:擴展了我聲明父項(common-ivy.xml)並在所有項目中擴展的功能(我有大約120個使用此項目的項目)。我通過使用此線程IVY Extends via ivy:resolve中的技術來實現此目的。IVY擴展失去依賴聲明

現在的問題是,在採用這種結構後,我失去了項目之間的依賴關係,這是必需的,它現在正在破壞一切。例如見下文;

共的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> 

項目A的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 

這是不正確應返回;

ProjectZ, ProjectA 

我使用的是IVY 2.3.0。這是IVY中的錯誤還是我錯過了一些東西?

+0

你的擴展聲明不應該包含branch =「15」來正確引用common-ivy.xml嗎? – 2014-09-12 00:48:19

+1

extends不支持'branch'屬性,它將直接從common-ivy.xml中使用到每個項目中。問題出在ProjectA聲明它依賴於ProjectZ的依賴項,但是IVY無法識別它 – SJunejo 2014-09-12 19:11:29

回答

1

OK,我不得不調試IVY :(解決這個問題,結果發現,與普通-的ivy.xml沿着依賴的rev是造成問題在調試我發現了兩個解決方案。

1)使用轉=「+」,在依賴的定義和讓IVY解決任何可用

2)從共的ivy.xml刪除revision="1.0.0",因爲它是由於extends繼承並且因此IVY匹配失敗支持最新dev == 1.0.0,一旦從common-ivy.xml中刪除,我的項目變成工作@主機名是corr由IVY高效解決

我選擇了選項2,因爲它需要在單個文件中進行更改,而且屬性在我的工作空間中並未使用。