extends ignores defaultconfmapping/defaultconf/confmappingoverride attributes 
from parent's configurations and dependencies tags
--------------------------------------------------------------------------------------------------------------------------------

                 Key: IVY-1213
                 URL: https://issues.apache.org/jira/browse/IVY-1213
             Project: Ivy
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.2.0-RC1
            Reporter: Kay Röpke


Using a parent ivy module with a configurations tag such as
{code:xml}
<ivy-module version="2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd";>
    <info
        organisation="com.foo"
        module="parent"
        status="integration" />
        
<configurations 
defaultconfmapping="compile->compile(*),master(*);runtime->runtime(*);test->runtime(*),master(*)">
        <conf name="default" visibility="public" description="runtime 
dependencies and master artifact can be used with this conf" 
extends="runtime,master"/>
        <conf name="master" visibility="public" description="contains only the 
artifact published by this module itself, with no transitive dependencies"/>
        <conf name="compile" visibility="public" description="this is the 
default scope, used if none is specified. Compile dependencies are available in 
all classpaths."/>
        <conf name="provided" visibility="public" description="this is much 
like compile, but indicates you expect the JDK or a container to provide it. It 
is only available on the compilation classpath, and is not transitive."/>
        <conf name="runtime" visibility="public" description="this scope 
indicates that the dependency is not required for compilation, but is for 
execution. It is in the runtime and test classpaths, but not the compile 
classpath." extends="compile"/>
        <conf name="test" visibility="private" description="this scope 
indicates that the dependency is not required for normal use of the 
application, and is only available for the test compilation and execution 
phases." extends="runtime"/>
        <conf name="system" visibility="public" description="this scope is 
similar to provided except that you have to provide the JAR which contains it 
explicitly. The artifact is always available and is not looked up in a 
repository."/>
        <conf name="sources" visibility="public" description="this 
configuration contains the source artifact of this module, if any."/>
        <conf name="javadoc" visibility="public" description="this 
configuration contains the javadoc artifact of this module, if any."/>
        <conf name="optional" visibility="public" description="contains all 
optional dependencies"/>
</configurations>
        <publications />
        <dependencies>
            <dependency organisation="junit" module="junit" revision="4.8.2" 
conf="test" />
        </dependencies>
</ivy-module>
{code}

and later referring to that parent with an extends clause

{code:xml}
<ivy-module version="2.2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd";>
        <info
           organisation="com.foo"
           module="module1"
           status="integration">
           <extends organisation="com.mysql.etools" module="etools-base" 
revision="1.0.0+" />
        </info>

    <configurations />

    <publications><!-- omitted for brevity --></publications>
    <dependencies>
        <dependency organisation="com.google.collections" 
module="google-collections" revision="1.0" conf="compile" />
    </dependencies>
</ivy-module>
{code}

leads to the google-collections dependency not being retrieved, because the 
merged ivy module descriptor does not inherit the defaultconfmapping from its 
parent.
Adding 
{noformat}defaultconfmapping="compile->compile(*),master(*);runtime->runtime(*);test->runtime(*),master(*)"{noformat}
 to the _child_ module's configurations tags makes it work.
Looking at XmlModuleDescriptorParser seems to support the fact that it does not 
merge tag attributes at all.

Needless to say, this is really hard to find when refactoring modules to use 
extends.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to