ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Hurne <m...@thehurnes.com>
Subject Re: Ivy not resolving transitive dependencies
Date Wed, 09 May 2012 17:37:52 GMT
> - 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 <troy.kinsella@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
> <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
View raw message