Eric Milles created IVY-1656:
--------------------------------

             Summary: deliver writes extended configuration dependencies after 
local dependencies
                 Key: IVY-1656
                 URL: https://issues.apache.org/jira/browse/IVY-1656
             Project: Ivy
          Issue Type: Bug
          Components: Ant
            Reporter: Eric Milles


Given two Ivy modules, where one extends the other:

{code:xml}
<ivy-module
  version="2.0"
  xmlns:m="http://ant.apache.org/ivy/maven";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd";>
    <info module="One" organisation="xxx" />
    <configurations>
        <conf name="master" />
    </configurations>
    <dependencies defaultconf="master" defaultconfmapping="*->master,runtime()">
        <dependency org="abc" name="def" rev="1.2.3" />
    </dependencies>
</ivy-module>
{code}

{code:xml}
<ivy-module
  version="2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd";>
    <info module="Two" organisation="xxx">
        <extends module="One" organisation="xxx"
          extendType="configurations,dependencies" location="../One/ivy.xml" 
revision="latest" />
    </info>
    <dependencies defaultconf="master" defaultconfmapping="*->master,runtime()">
        <dependency org="www" name="xyz" rev="1.2.3" />
    </dependencies>
</ivy-module>
{code}

Ivy resolves abc:def:1.2.3 then www:xyz:1.2.3.  However, when delivering, the 
combined ivy.xml is written as:
{code:xml}
<ivy-module
  version="2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd";>
    <info module="Two" organisation="xxx">
        <!-- <extends module="One" organisation="xxx" 
extendType="configurations,dependencies" location="../One/ivy.xml" 
revision="latest" /> -->
    </info>
    <configurations>
        <conf name="master" />
    </configurations>
    <dependencies defaultconf="master" defaultconfmapping="*->master,runtime()">
        <dependency org="www" name="xyz" rev="1.2.3" />
        <!-- dependencies inherited from xxx#One;working@hostname -->
        <dependency org="abc" name="def" rev="1.2.3" />
    </dependencies>
</ivy-module>
{code}

Thus when Ivy re-resolves this the order is reversed.  If a conflict manager 
other than "latest version" is used, this can be a problem for a transitive 
dependency of both deps.  And when converted to Maven metadata with makepom, 
"nearest definition" definitely comes into play.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to