ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Al (JIRA)" <j...@apache.org>
Subject [jira] Created: (IVY-1196) Addition of conf="..." on own-organisation dependencies limits transitive resolve depth (and can break IvyDE). Symptoms of various conf="xxx" settings detailed
Date Tue, 15 Jun 2010 14:23:26 GMT
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.


Mime
View raw message