Hi, I've been deleting my cache prior to running the build.
The only way I can seem to make this work is to have a second resolver which has the classifier hard-coded, ie: <chain name="chain" returnFirst="true" dual="true"> <ibiblio name="central" m2compatible="true" checkconsistency="false" pattern="[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> <ibiblio name="central2" m2compatible="true" checkconsistency="false" pattern="[organisation]/[module]/[revision]/[artifact]-[revision]-jdk15.[ext]"/> </chain> This seems to work (at least all the jars I expect to find are being downloaded to my local repo). Cheers, Andy > On 04 February 2014 at 06:55 Marc De Boeck <mdeb...@gmail.com> wrote: > > You may have to remove the json-lib entry in your cache. Check also how the > artifacts were stored in the cache. Could you find the jdk-specific artifacts > there ? > > Marc > > > 2014-02-03 a...@far2gone.com <mailto:a...@far2gone.com> <a...@far2gone.com > <mailto:a...@far2gone.com> >: > > > Hi, > > > > thanks for your answer once again. > > > > My ivysettings.xml file now looks like: > > > > > > <ivysettings> > > > > <settings defaultResolver="chain" defaultConflictManager="all" /> <!-- > > get all revisions without any eviction --> > > > > <caches defaultCacheDir="${ivy.cache.dir}/no-namespace" /> > > > > <resolvers> > > > > <filesystem name="fs1"> > > <ivy > > > > > > pattern="${dest.repo.dir}/no-namespace/[organisation]/[module]/ivys/ivy-[revision](-[classifier]).xml" > > /> > > <artifact > > > > > > pattern="${dest.repo.dir}/no-namespace/[organisation]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]" > > /> > > > > > > </filesystem> > > > > > > <chain name="chain" returnFirst="true" dual="true"> > > > > > > > > > > > > <ibiblio name="central" m2compatible="true" > > > > > > pattern="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/> > > > > > > > > </chain> > > > > </resolvers> > > > > </ivysettings> > > > > > > Unfortunately, when I run the ant task the result is: > > > > > > > > [ivy:install] :: installing net.sf.json-lib#json-lib;2.4 :: > > [ivy:install] :: resolving dependencies :: > > [ivy:install] found net.sf.json-lib#json-lib;2.4 in chain > > [ivy:install] :: downloading artifacts to cache :: > > [ivy:install] :: installing in fs1 :: > > [ivy:install] published ivy to > > c:\tmp\ivy-test\repo\no-namespace\net.sf.json-lib\json-lib\ivys\ivy-2.4.xml > > [ivy:install] :: install resolution report :: > > [ivy:install] :: resolution report :: resolve 0ms :: artifacts dl 175ms > > --------------------------------------------------------------------- > > | | modules || artifacts | > > | conf | number| search|dwnlded|evicted|| number|dwnlded| > > --------------------------------------------------------------------- > > | default | 1 | 0 | 0 | 0 || 1 | 0 | > > --------------------------------------------------------------------- > > [ivy:install] > > [ivy:install] :: problems summary :: > > [ivy:install] :::: WARNINGS > > [ivy:install] [FAILED ] net.sf.json-lib#json-lib;2.4!json-lib.jar: (0ms) > > [ivy:install] ==== central: tried > > > > > > [ivy:install]<http://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/json-lib-2.4.jar> > > [ivy:install] :::::::::::::::::::::::::::::::::::::::::::::: > > [ivy:install] :: FAILED DOWNLOADS :: > > [ivy:install] :: ^ see resolution messages for details ^ :: > > [ivy:install] :::::::::::::::::::::::::::::::::::::::::::::: > > [ivy:install] :: net.sf.json-lib#json-lib;2.4!json-lib.jar > > [ivy:install] :::::::::::::::::::::::::::::::::::::::::::::: > > [ivy:install] > > [ivy:install] > > [ivy:install] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS > > > > BUILD FAILED > > D:\ar-work\tmp\ivy-classifier-test\build.xml:32: Problem happened while > > installing modules - see output for details > > > > > > > > The other libraries are downloaded as expected. > > > > > > > > Cheers, Andy > > > > > On 29 January 2014 at 21:32 Marc De Boeck < mdeb...@gmail.com > > > <mailto:mdeb...@gmail.com> > wrote: > > > > > > > > > I could reproduce the problem you are describing. > > > It seems that the pom-file of this json-lib is not consistent with the > > > published artifacts. > > > > > > Try to specify the artifact pattern in your central resolver to > > > something > > > like this: > > > > > > <ibiblio name="central" m2compatible="true"> > > > <pattern="[organisation]/[module]/[revision]/[artifact]-[revision] > > > (-[classifier]).[ext]"/> > > > </ibiblio> > > > > > > You should also add in the same way the artifact pattern for your cache > > > and > > > for your local repo. Otherwise, all these artifacts will be mapped to > > > the > > > same artifact name, and only one of the artifacts will end up in your > > > local > > > repo. > > > > > > Regards, > > > Marc > > > > > > > > > > > > > > > 2014-01-29 a...@far2gone.com <mailto:a...@far2gone.com> < > > > a...@far2gone.com <mailto:a...@far2gone.com> > > > > > > > > Hi, > > > > > > > > I think my use case is straightforward, I want to use Ivy to make a > > > > local > > > > Ivy > > > > repository of libraries available in maven central. This repository > > > > is > > > > then used > > > > to find dependencies declared in a gradle build. > > > > > > > > The intent is to have a build script that will automatically trundle > > > > off > > > > and > > > > collect all the jars requested in "install" tasks and store them > > > > locally > > > > (whether on the laptop of a developer who is new to the project or on > > > > a CI > > > > server etc.). > > > > > > > > I think the problem I face is that without declaring a classifier in > > > > the > > > > install > > > > task, non of the json-lib jars are downloaded at all. > > > > > > > > I don't think I'm trying to prematurely refine the content of the > > > > repository, in > > > > fact I'd be happy if all the available variants were downloaded, the > > > > problem is > > > > that nothing is downloaded. > > > > > > > > I suspect the reason is as follows, if you take a look at the maven > > > > web > > > > site > > > > page for json-lib at: > > > > > > > ><http://mvnrepository.com/artifact/net.sf.json-lib/json-lib/2.4> > > > > > > > > The link it gives to download the jar is: > > > > > > > > > > > > > ><http://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/json-lib-2.4.jar> > > > > > > > > Which gives a 404 Not Found. > > > > > > > > Looking in the directory in which the jar files are stored: > > > > > > > ><http://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/> > > > > > > > > It can be seen that the jar file names all include a jdk13 or a jdk15 > > > > in > > > > the > > > > file name. > > > > > > > > So, I think I need to persuade Ivy to put a jdk15 somewhere in the > > > > file > > > > name it > > > > is expecting? > > > > > > > > If I were using specific Ivy dependencies I think I would use a > > > > classifier > > > > in > > > > the dependency statement to achieve this. > > > > > > > > Where I get completely unstuck is figuring out how to persuade an Ivy > > > > install to > > > > download the files (either all of them or just the ones I ask for)... > > > > > > > > My setup is copied pretty much verbatim from the Ivy repository > > > > tutorial, > > > > ivy > > > > settings and ant build copied below. > > > > > > > > Cheers, Andy > > > > > > > > Ivy settings: > > > > > > > > <ivysettings> > > > > > > > > <settings defaultResolver="chain" defaultConflictManager="all" /> > > > > <!-- > > > > get all > > > > revisions without any eviction --> > > > > > > > > <caches defaultCacheDir="${ivy.cache.dir}/no-namespace" /> > > > > > > > > <resolvers> > > > > > > > > <filesystem name="fs1"> > > > > <ivy > > > > > > > > > > pattern="${dest.repo.dir}/no-namespace/[organisation]/[module]/ivys/ivy-[revision].xml" > > > > /> > > > > <artifact > > > > > > > > > > pattern="${dest.repo.dir}/no-namespace/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]" > > > > /> > > > > </filesystem> > > > > > > > > > > > > <chain name="chain" returnFirst="true" dual="true"> > > > > > > > > <ibiblio name="central" m2compatible="true"/> > > > > > > > > </chain> > > > > > > > > <ibiblio name="libraries" m2compatible="true" /> > > > > > > > > </resolvers> > > > > > > > > </ivysettings> > > > > > > > > > > > > Ant build: > > > > > > > > <target name="install-libs" description="--> install module from > > > > maven 2 > > > > repository" depends="init-ivy"> > > > > > > > > <property name="dest.repo.dir" value="${externalBuildDir}/${repoDir}" > > > > /> > > > > <property name="ivy.cache.dir" > > > > value="${externalBuildDir}/${ivyCacheDir}"/> > > > > > > > > <ivy:settings file="${basedir}/ivysettings.xml"/> > > > > > > > > <ivy:install organisation="log4j" module="log4j" revision="1.2.17" > > > > from="chain" > > > > to="fs1" transitive="true" overwrite="true"/> > > > > > > > > <ivy:install organisation="org.apache.solr" module="solr-solrj" > > > > revision="4.5.1" > > > > from="chain" to="fs1" transitive="true" overwrite="true"/> > > > > > > > > <!-- a load of other libraries that install ok --> > > > > > > > > <!-- the cause of my woe --> > > > > <ivy:install organisation="net.sf.json-lib" module="json-lib" > > > > revision="2.4" > > > > from="chain" to="fs1" transitive="false" overwrite="true" /> > > > > > > > > </target> > > > > > > > > > > > > > On 28 January 2014 at 19:05 Kirby Files < kirby.fi...@masergy.com > > > > > <mailto:kirby.fi...@masergy.com> > wrote: > > > > > > > > > > > > > > > The install task is for copying entire modules into a repository. > > > > > You > > > > > typically don't do surgery on the artifacts, filtering by type or > > > > > classifier, at this point. Once it's in your repository, you use > > > > > the > > > > > retrieve task to pull specific artifacts from dependencies. > > > > > > > > > > Perhaps you can explain your use case a little more, and > > > > > demonstrate > > > > > what you hope to accomplish with the install task. > > > > > > > > > > --Kirby > > > > > > > > > > Sent from my mobile device > > > > > > > > > > On Jan 28, 2014, at 1:30 PM, Andy Redhead < a...@far2gone.com > > > > > <mailto:a...@far2gone.com> > wrote: > > > > > > > > > > > Hi, > > > > > > Thanks for your reply and if I was using a dependency then I > > > > > > think this > > > > > > would be sufficient. > > > > > > > > > > > > What I really need is the equivalent for the install task. > > > > > > > > > > > > Cheers, Andy > > > > > > > > > > > > On 28 Jan 2014 14:44, David Weintraub < qazw...@gmail.com > > > > > > <mailto:qazw...@gmail.com> > wrote: > > > > > >> > > > > > >> There are a couple of things you need: > > > > > >> > > > > > >> * You need to add the following line to the top of your ivy.xml > > > > > >> file: > > > > > >> > > > > > >> <ivy-module version="1.0" xmlns:maven="<http://maven.apache.org> > > > > > >> "> > > > > > >> > > > > > >> Note the "xmlns" declaration. It doesn't matter where it points > > > > > >> to (I > > > > like > > > > > >> using the URL of the project), you just need to declare the > > > > > >> namespace. > > > > > >> > > > > > >> * Now, you can use that Maven classifier in your dependency > > > > declaration: > > > > > >> > > > > > >> <dependency org="net.sf.json-lib" > > > > > >> name="json-lib" > > > > > >> rev="2.4" > > > > > >> conf="compile->default"> > > > > > >> <artifact name="json-lib" > > > > > >> type="jar" > > > > > >> ext="jar" > > > > > >> maven:classifier="jdk15"/> > > > > > >> </dependency> > > > > > >> > > > > > >> > > > > > >> -- > > > > > >> David Weintraub > > > > > >> qazw...@gmail.com <mailto:qazw...@gmail.com> > > > > > >> > > > > > >> ================================================ > > > > > >> Sure, call me crazy. They called Eddie Antar crazy too, but > > > > > >> look at these low, low prices on all of these famous name brand > > > > appliances. > > > > > >> > > > > > >> > > > > > >> On Jan 28, 2014, at 8:40 AM, a...@far2gone.com > > > > > >> <mailto:a...@far2gone.com> wrote: > > > > > >> > > > > > >>> Hi, > > > > > >>> > > > > > >>> I've been having a go at using the Ivy Install ant task to > > > > > >>> create a > > > > local > > > > > >>> repository based on libraries downloaded from maven central. > > > > > >>> > > > > > >>> Having gone along with the tutorial, all seemed to be working > > > > > >>> :) > > > > > >>> > > > > > >>> Until... > > > > > >>> > > > > > >>> One of the dependencies in my project is json-lib. > > > > > >>> > > > > > >>> It seems that the json-lib project uses a maven classifier to > > > > discriminate > > > > > >>> between jars suitable for different versions of the jvm. > > > > > >>> > > > > > >>> If I were just declaring a dependency I think I could do this: > > > > > >>> > > > > > >>> <dependency> > > > > > >>> <groupId>net.sf.json-lib</groupId> > > > > > >>> <artifactId>json-lib</artifactId> > > > > > >>> <version>2.4</version> > > > > > >>> <classifier>jdk15</classifier> > > > > > >>> </dependency> > > > > > >>> > > > > > >>> However, I'm using install tasks that look like: > > > > > >>> > > > > > >>> <ivy:install organisation="log4j" module="log4j" > > > > > >>> revision="1.2.17" > > > > > >>> from="chain" > > > > > >>> to="fs1" transitive="true" overwrite="true"/> > > > > > >>> > > > > > >>> How should I declare the "classifier" on an "install" task? > > > > > >>> > > > > > >>> Thanks, Andy > > > > > >> > > >