ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Troy Kinsella <troy.kinse...@wmode.com>
Subject Re: Ivy not resolving transitive dependencies
Date Wed, 09 May 2012 15:55:44 GMT
Adding an ivy pattern to the resolver fixed the transitivity issue, thanks!

Any other advice on the remaining questions?

*Troy Kinsella* | Software Developer
Direct. 250.355.2296 | Email. troy.kinsella@wmode.com 
<mailto:troy.kinsella@wmode.com>

Wmode ® Inc. | Powering Connected Devices


On 12-05-08 08:12 PM, Sven Zethelius wrote:
> RE: Transitivity, make sure you set the<ivy pattern ...>  in the resolver.  Without
it, it won't find the published ivy files, only the raw artifacts so it won't know the relationship.
>
> ________________________________________
> From: Troy Kinsella [troy.kinsella@wmode.com]
> Sent: Tuesday, May 08, 2012 6:45 PM
> To: ivy-user@ant.apache.org
> Subject: Ivy not resolving transitive dependencies
>
> Hi,
>
> I'm new to Ivy and I think I'm fumbling on what I think is a unique Ivy
> set-up...
>
> Facts:
> - I have three modules: ModuleA depends on ModuleB depends on ModuleC.
> - Resolving dependencies of ModuleB works correctly.
> - I am building JavaScript modules where a module may depend on a
> "source" artifact of another module (as opposed to a binary).
> - I am trying to mimic Maven's SNAPSHOT version convention
> - Artifacts are published to a company-internal "shared" Nexus repository
> - I have been clearing the ivy cache continually as I change things
> - I have read every Ivy documentation page about 10 times each :)
>
> Problems:
> - I'm having trouble resolving transitive dependencies, and I'm unsure
> where to start troubleshooting.
> - Not sure if there is merit or benefit to mimicking Maven's SNAPSHOT
> version convention. Is it getting in the way?
> - I'm not sure if repository layout is an issue.
> - I'm not sure if I'm using configurations correctly.
> - I'd like to _not_ have to specify the exact artifact in my
> dependencies, but it seems I need to to work with "source" artifacts.
>
> Questions:
> - How do I solve the transitive dependency resolution issue?
> - Is there a better way to configure Ivy to achieve the equivalent
> behaviour?
> - Does Ivy have special handling of certain artifact types, such as the
> default (binary, I guess), "sources", or "javadoc"?
> - Are there any best practices that I am blatantly violating?
>
> Relevant configuration files:
>
> ===== ivysettings.xml =====
>
> <ivysettings>
> <settings defaultResolver="default"/>
> <include url="ivysettings-public.xml"/>  <!-- currently unused -->
> <include url="ivysettings-shared.xml"/>
> <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
> <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
> <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
> </ivysettings>
>
> ===== ivysettings-shared.xml =====
>
> <ivysettings>
> <resolvers>
> <url name="shared" m2compatible="true">
> <artifact
> pattern="http://host/nexus/content/repositories/snapshots/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
> </url>
> </resolvers>
> </ivysettings>
>
> ===== ModuleC ivy.xml =====
>
> <info organisation="com.company"
>             module="ModuleC"
>             revision="1.0-SNAPSHOT" />
>
> <configurations>
> <conf name="doc" />
> <conf name="source" />
> <conf name="runtime" />
> </configurations>
>
> <publications>
> <artifact name="ModuleC-source" type="source" ext="jar" conf="source" />
> <artifact name="ModuleC-jsdoc" type="jsdoc" ext="zip" conf="doc" />
> </publications>
>
> ===== ModuleB ivy.xml =====
>
> <info organisation="com.company"
>             module="ModuleB"
>             revision="1.0-SNAPSHOT" />
>
> <configurations>
> <conf name="doc" />
> <conf name="source" />
> <conf name="runtime" />
> </configurations>
>
> <publications>
> <artifact type="jar" />
> <artifact name="ModuleB-source" type="source" ext="jar" conf="source" />
> </publications>
>
> <dependencies>
> <dependency org="com.company" name="ModuleC" rev="1.0-SNAPSHOT">
> <artifact name="ModuleC-source" conf="source" />
> </dependency>
> </dependencies>
>
> ===== ModuleA ivy.xml =====
>
> <info organisation="com.company"
>             module="ModuleA"
>             revision="1.0-SNAPSHOT" />
>
> <configurations>
> <conf name="doc" />
> <conf name="source" />
> <conf name="runtime" />
> </configurations>
>
> <publications>
> <artifact name="ModuleA" type="jar" conf="runtime" />
> </publications>
>
> <dependencies>
> <dependency org="com.company" name="ModuleB" rev="1.0-SNAPSHOT">
> <artifact name="ModuleB-source" conf="source" />
> </dependency>
>
> <!-- I have to have this to resolve this transitive dependency... why? -->
> <!--<dependency org="com.company" name="ModuleC" rev="1.0-SNAPSHOT">
> <artifact name="ModuleC-source" conf="source" />
> </dependency>  -->
> </dependencies>
>
> ======
>
> When I publish ModuleC, it results in the following files:
>
> [ivy:publish]     published ModuleC-jsdoc to
> http://host/nexus/content/repositories/snapshots/com/company/ModuleC/1.0-SNAPSHOT/ModuleC-jsdoc-1.0-SNAPSHOT.zip
> [ivy:publish]     published ModuleC-source to
> http://host/nexus/content/repositories/snapshots/com/company/ModuleC/1.0-SNAPSHOT/ModuleC-source-1.0-SNAPSHOT.jar
> [ivy:publish]     published ivy to
> http://host/nexus/content/repositories/snapshots/com/company/ModuleC/1.0-SNAPSHOT/ivy-1.0-SNAPSHOT.xml
>
> When I publish ModuleB, it results in the following files:
>
> [ivy:publish]     published ModuleB to
> http://host/nexus/content/repositories/snapshots/com/company/ModuleB/1.0-SNAPSHOT/ModuleB-1.0-SNAPSHOT.jar
> [ivy:publish]     published ModuleB-source to
> http://host/nexus/content/repositories/snapshots/com/company/ModuleB/1.0-SNAPSHOT/ModuleB-source-1.0-SNAPSHOT.jar
> [ivy:publish]     published ivy to
> http://host/nexus/content/repositories/snapshots/com/company/ModuleB/1.0-SNAPSHOT/ivy-1.0-SNAPSHOT.xml
>
> I am resolving dependencies in ant like so:
>
> <ivy:resolve />
> <ivy:retrieve pattern="lib/[artifact].[ext]" />
>
> After trying to build ModuleA, I only have the following under ModuleA/lib:
>
>       ModuleB-source.jar
>
> I also need ModuleC-source.jar in order to build ModuleA.
>
> Thanks,
>
> Troy Kinsella

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message