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)