You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by Jo...@McAfee.com on 2013/09/02 18:17:40 UTC

ivy:install

Hello there,

I asked this question on ivy-user@ant.apache.org<ma...@ant.apache.org> but without much response, so I thought I'd give dev@ant.apache.org<ma...@ant.apache.org> a try:

Is there a way to make ivy:install install transitive dependencies that are defined within a private configuration?

Let me explain why I want this feature, or at least a way around the current behaviour.

Consider that I am developing a module.  It has several artefacts published via public configurations and some private configurations which are used for dependency resolution as part of the build.  Here is an example:

  <configurations>
    <conf name="build" visibility="private"/>
    <conf name="docs"/>
    <conf name="binaries"/>
  </configurations>
  <publications>
    <artifact name="readme" ext="txt" type="text" conf="docs"/>
    <artifact name="foo" ext="dll" type="library" conf="binaries"/>
  </publications>
  <dependencies>
    <dependency org="myorg" name="bar" rev="latest.integration">
      <conf name="build" mapped="libs"/>
    </dependency>
  </dependencies>

So I use the build configuration to pull the libs configuration from the latest version of the myorg#bar module.  This works fine for building the module.  However, sometimes I want to develop my module while sitting on a plane with no access to my corporate Ivy repository, the solution use ivy:install to create an "offline" repository on my laptop before I leave the office.  However ivy:install does not want to pull dependencies for the private "build" configuration which means the myorg#bar module is not installed.  Is there any way around this other than change all my private configurations to public?

Looking at the code it seems possible to avoid this issue by passing "false" as the value of shouldBePublic to the IvyNode.handleConfiguration function, however tracing back through the function calls I eventually end up in ResolveEngine.fetchDependencies / doFetchDependencies functions which, during a resolve, will call VisitNode.loadData sometimes hardcoding the value of shouldBePublic to false sometimes to true.

Regards
Jonathan