[ 
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)

Reply via email to