[
https://issues.apache.org/jira/browse/IVY-1570?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul Burrowes updated IVY-1570:
-------------------------------
Description:
It looks like if a dependency includes an `<artifact>` filter then only
artifacts that match `<artifact>` filters will be resolved for the common
dependency
E.g. with three modules a, b and c, resolving for c will only fetch a.war, not
a-api.jar despite directly depending on the api conf of a.
a/ivy.xml:
<ivy>
<info module="a"/>
<configurations>
<configuration name="api"/>
<configuration name="deploy"/>
</configurations>
<publications>
<artifact name="a-api" type="jar" conf="api"/>
<artifact name="a" type="war" conf="deploy"/>
</publications>
</ivy>
b/ivy.xml
<ivy>
<info module="b"/>
<configurations>
<configuration name="api"/>
<configuration name="deploy"/>
</configurations>
<dependencies>
<dependency name="a" conf="deploy">
<artifact name="a" type="war" conf="deploy"/>
</dependency>
</dependencies>
</ivy>
c/ivy.xml
<ivy>
<info module="c"/>
<configurations>
<configuration name="api"/>
<configuration name="deploy"/>
</configurations>
<dependencies>
<dependency name="a" conf="api">
<dependency name="b" conf="deploy">
</dependencies>
</ivy>
The logic in IvyNodeUsage.getDependencyIncludesSet() is being overridden by
IvyNode.getDependencies() which treats an empty includes set as "include
nothing" when an upstream dependency provides a set of artifacts.
was:
E.g. with three modules a, b and c, resolving for c will only fetch a.war, not
a-api.jar despite directly depending on the api conf of a.
a/ivy.xml:
<ivy>
<info module="a"/>
<configurations>
<configuration name="api"/>
<configuration name="deploy"/>
</configurations>
<publications>
<artifact name="a-api" type="jar" conf="api"/>
<artifact name="a" type="war" conf="deploy"/>
</publications>
</ivy>
b/ivy.xml
<ivy>
<info module="b"/>
<configurations>
<configuration name="api"/>
<configuration name="deploy"/>
</configurations>
<dependencies>
<dependency name="a" conf="deploy">
<artifact name="a" type="war" conf="deploy"/>
</dependency>
</dependencies>
</ivy>
c/ivy.xml
<ivy>
<info module="c"/>
<configurations>
<configuration name="api"/>
<configuration name="deploy"/>
</configurations>
<dependencies>
<dependency name="a" conf="api">
<dependency name="b" conf="deploy">
</dependencies>
</ivy>
The logic in IvyNodeUsage.getDependencyIncludesSet() is being overridden by
IvyNode.getDependencies() which treats an empty includes set as "include
nothing" when an upstream dependency provides a set of artifacts.
> Artifact filters from dependencies override module includes
> -----------------------------------------------------------
>
> Key: IVY-1570
> URL: https://issues.apache.org/jira/browse/IVY-1570
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.4.0
> Reporter: Paul Burrowes
>
> It looks like if a dependency includes an `<artifact>` filter then only
> artifacts that match `<artifact>` filters will be resolved for the common
> dependency
> E.g. with three modules a, b and c, resolving for c will only fetch a.war,
> not a-api.jar despite directly depending on the api conf of a.
> a/ivy.xml:
> <ivy>
> <info module="a"/>
> <configurations>
> <configuration name="api"/>
> <configuration name="deploy"/>
> </configurations>
> <publications>
> <artifact name="a-api" type="jar" conf="api"/>
> <artifact name="a" type="war" conf="deploy"/>
> </publications>
> </ivy>
> b/ivy.xml
> <ivy>
> <info module="b"/>
> <configurations>
> <configuration name="api"/>
> <configuration name="deploy"/>
> </configurations>
> <dependencies>
> <dependency name="a" conf="deploy">
> <artifact name="a" type="war" conf="deploy"/>
> </dependency>
> </dependencies>
> </ivy>
> c/ivy.xml
> <ivy>
> <info module="c"/>
> <configurations>
> <configuration name="api"/>
> <configuration name="deploy"/>
> </configurations>
> <dependencies>
> <dependency name="a" conf="api">
> <dependency name="b" conf="deploy">
> </dependencies>
> </ivy>
> The logic in IvyNodeUsage.getDependencyIncludesSet() is being overridden by
> IvyNode.getDependencies() which treats an empty includes set as "include
> nothing" when an upstream dependency provides a set of artifacts.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)