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

Josh Guice commented on IVY-594:
--------------------------------

I too have this problem.  In the buildlist example in the docs it says this 
"Builds a list of build.xml files sorted according to the ivy.xml files found 
in an ivy directory relative to those build files. Only build.xml files of 
modules which are dependencies of myapp (either direct or transitive) are put 
in the result list."

The caveat is that all the ivy files between the root module and the transitive 
dependency (down the chain) must be present in the local work area for a 
complete buildlist to be generated (complete is defined as one that include all 
dependencies [transitive included] that are available locally to build)

In the OP's example, if you only have A and C present in the work dir and you 
compute a buildlist based on root A then C will not be included in the 
buildlist.  But if you also put module B in the work dir, then ivy can then 
follow the transitive trail and correctly calculate a build path C,B,A.

I suppose what we're asking is that if I only have A and C in my local work dir 
and they are dependent transitively via B, then buildlist should be able to 
figure that out and produce a build-path including A and C.

When buildlist sees that A depends on B, but no ivy.xml is present locally for 
B, it should perform a resolve operation to get the ivy.xml for B (using 
whatever selectors are in A's dependency block).  Then  follow the dependencies 
in B's remotely resolved ivy.xml adding any dependencies that *are* present 
locally to the build path (further resolving any that aren't present, 
continuing to add any local matches, until it exhausts the dependency graph).

In short, given A -> B -> C and locally present A and C I would expect ivy to 
be able to correctly give me a build path of C,A when A is the root.

Hope this helps clarify the requirements a bit.

The use-case for this is that without this functionality developers must ensure 
that they have downloaded all modules in the dependency chain (rather than just 
the ones they need to change).  This makes setup a bit complicated in an 
environment where there are sometimes a dozen or more modules in the dependency 
graph.  Ideally they could only checkout the modules they want to modify and if 
they are related at all ivy would correctly compute a build path included them.

Thanks,
Josh

> Add a transitive attribute to buildlist
> ---------------------------------------
>
>                 Key: IVY-594
>                 URL: https://issues.apache.org/jira/browse/IVY-594
>             Project: Ivy
>          Issue Type: New Feature
>            Reporter: Gilles Scokart
>
> Currently the buildlist task only order the given ivy file without 
> considering the dependencies that are not in the ivy files.
> For instance if you have module A depending on B, and B depending on C, and 
> you ask a buildlist ordoering A and C without giving the ivy.xml file of B, 
> the result will be unknown.
> We should add an optional parameter 'transitive' to ask to take into account 
> the transitive dependencies of the modules.

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