ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kay Röpke (JIRA) <j...@apache.org>
Subject [jira] Created: (IVY-1213) extends ignores defaultconfmapping/defaultconf/confmappingoverride attributes from parent's configurations and dependencies tags
Date Mon, 02 Aug 2010 10:57:17 GMT
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.


Mime
View raw message