You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Al (JIRA)" <ji...@apache.org> on 2010/06/15 16:31:28 UTC

[jira] Commented: (IVY-1196) Addition of conf="..." on own-organisation dependencies limits transitive resolve depth (and can break IvyDE). Symptoms of various conf="xxx" settings detailed

    [ https://issues.apache.org/jira/browse/IVY-1196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12878981#action_12878981 ] 

Al commented on IVY-1196:
-------------------------

I've just removed the conf="..." setting from all dependencies, and I actually still get a maximum resolve depth of 2. This makes me think it's something to do with the addition of the <conf> definitions in the first place, rather than the attribute on the dependencies. 


> Addition of conf="..." on own-organisation dependencies limits transitive resolve depth (and can break IvyDE).  Symptoms of various conf="xxx" settings detailed
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IVY-1196
>                 URL: https://issues.apache.org/jira/browse/IVY-1196
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.1.0
>         Environment: ant+ivy and IvyDE
>            Reporter: Al
>            Priority: Critical
>
> The issue is that transitivity was infinite before the introduction of the conf="..." attribute on internal dependencies. After adding conf="*->*" transitivity is limited to a depth of 2. If I use conf="default->default" it limits to a depth of 1.
> I'll detail here the conf="*->*" case. Specific issues with other conf attributes are detailed afterwards.
> The project environment is as follows: (all projects are internal and not third part)
> A -> B
> B -> C
> C -> D
> D -> E
> All projects specify these dependencies as 
> <dependency org="myOrg" name="X" revision="SNAPSHOT" transitive="true" conf="*->*,!javadoc,!sources" />
> and have 
> <configuration>
>  <conf name="default" visibility="public" transitive="true" />
>  <conf name="test" visibility="public" transitive="true" />
> </configuration>
> NB: 'test' does not extend 'default'. Also, only artifacts for the conf  'default' are built and published. I'm trying to sort out issues with the 'default' conf before adding 'test' in to the mix... one thing at a time, eh.
> Project E builds and publishes fine, no dependencies.
> Project D builds and publishes fine, and resolves project E.
> Project C builds and publishes fine, and resolves projects D and E
> Project B builds and publishes fine, but resolves only projects C and D. IMPORTANT: Project B does NOT actually reference any class in project E.
> Project A fails to build, and resolves only projects B and C. It DOES reference a class in project E.
> (For those interested in specifics, project E is a common-utils project, D and C are api definitions and projects A and B both contain concrete implementations. this means that project E is missing both the common-utils project A and also an essential low-level API project B).
> Some other potentially relevant details:
> - All revisions are "SNAPSHOT" and those that publish definitely exist in the repository and are the most recent publications. (maven friendly requirements)
> - Cleaning caches has no impact.
> - I have a <module org="myOrg" name="*" resolveMode="dynamic" > entry in my settings.xml file.
> - I've added !source and !javadoc for completeness, and don't know if it fails without them. If I remove them and leave only conf="*->*" the build will fail for lack of the javadoc and source jars. If this is the cause of the limited transitivity then I definitely think that's unexpected behaviour! Also, see my further tests on various conf settings, which should make it clear that the issue persists in other contexts as well. 
> I have tried different conf settings on the dependencies. Here's what I get:
> - setting conf="default->default", "*->default" or "default->@" leads to a transitive depth of just 1, and expected build errors as a result; classes in lower dependencies cannot be resolved
> - setting conf="*->@" or conf="*->#" causes ant+ivy to exhibit the depth=2 limited transitivity issue and IvyDE to break entirely with claims that unused confs in dependencies are "private" when in fact they are public (confirmed by ant+ivy treating them as such)
> I can't think of any other things to test. 
> Again, the main issue here is that there seems to be a limit on the depth of transitive dependency resolution depending on the conf="..." attribute's settings. This is unexpected behaviour, so I think qualifies as a bug.

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