> - 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.kinse...@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.kinse...@wmode.com > <mailto:troy.kinse...@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.kinse...@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