You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by Troy Kinsella <tr...@wmode.com> on 2012/05/09 03:45:44 UTC

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


Re: Ivy not resolving transitive dependencies

Posted by Matt Hurne <ma...@thehurnes.com>.
> - Does Ivy have special handling of certain artifact types, such as the
> default (binary, I guess), "sources", or "javadoc"?

Not that I'm aware of.  The default type is in fact "jar".  See
http://ant.apache.org/ivy/history/latest-milestone/ivyfile/artifact.html

Matt Hurne


On Wed, May 9, 2012 at 11:55 AM, Troy Kinsella <tr...@wmode.com> wrote:
> 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
> <ma...@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

Re: Ivy not resolving transitive dependencies

Posted by Troy Kinsella <tr...@wmode.com>.
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 
<ma...@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

RE: Ivy not resolving transitive dependencies

Posted by Sven Zethelius <sv...@expedia.com>.
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