A quick answer from my cellphone. Try to check the forcedeliver option or try to use the last strategy using a custom logic for it... Ivy doc talks about this.
+ + On Jan 24, 2012 5:42 AM, "Not Zippy" <notzi...@gmail.com> wrote: > I have 6 projects dependent on each other. I setup the dependency in ivy > based on a property so I can change them dynamicly like > <dependency conf="hidden->hidden" org="foo" name="project.a" > rev="${project.a.rev}"/> > > then the property is specified elsewhere (in the ant script or eclipse) > like project.a.rev=latest.integration > "latest.integration" means always use the latest builds local or remote > > So if I want to change this dependency to a particular release all I need > to do is change the property > project.a.rev=qa-release-1.* > (Note the wild card allows the revision to be unspecific) > > > Does that help ? > NZ > > > On Mon, Jan 23, 2012 at 8:30 AM, John Sokel <jso...@grubhub.com> wrote: > > > I have spent the entire weekend trying to make ivy work for me and ivy > > seems to be fundamentally opposed to what I want to do. A quick > > background: > > > > - I have 5 different projects, with a varying level of dependencies (A,B > > dep on C; B,C dep on D, all dep on E). > > - I have 3 different builds going with our CI server: trunk, QA branch, > > PROD branch > > - At any time a developer can run one of these 3 active branches (or all > > three) > > - I want to publish each artifact with up to 3 versions: trunk, qa, prod. > > No number scheme desired. > > Example: A-trunk.jar A-qa.jar A-prod.jar, B-trunk.jar B-qa.jar > > B-prod.jar, etc. > > - I want the dependent projects to get the last built artifact that was > > published. > > > > I went through the tutorials, and played with the example projects, and I > > cannot get this to work. Basically the problem is that IVY seems to be > > numeric version dependent, and will not retrieve the same version even > > though a new artifact has been published. Once the dependent artifact > has > > been resolved and retrieved, it is cached and will never be overwritten > > unless the version changes. Therefore the users of that artifact will > > never get the latest instance. > > > > I know the sample projects solve this by adding a unique build number, > or a > > timestamp based version, but this causes a tremendous amount of stale > > artifacts to lie around. Plus when resolved, it does not automatically > > clean up older versions that were retrieved, so I would need to put clean > > up tasks in all of my build files. This is evident in the > > depender/dependee example. With every build/publish of dependee (say 3 > > times), depender will copy the latest dependee-n.jar into its lib > directory > > without cleaning up the old ones. So it is left with the following in the > > lib dir: > > > > $ cd /opt/apache-ivy-2.2.0/src/example/dependence/depender/lib > > $ ls -l > > -rw-r--r-- 1 jsokel staff 169763 Nov 22 2005 commons-lang-2.0.jar > > -rw-r--r-- 1 jsokel staff 1511 Jan 22 16:02 dependee-1.jar > > -rw-r--r-- 1 jsokel staff 1511 Jan 22 16:06 dependee-2.jar > > -rw-r--r-- 1 jsokel staff 1511 Jan 22 16:07 dependee-3.jar > > > > > > So for me: > > - Old artifacts are completely irrelevant > > - We build many times per day so I dont want all the old jars/wars piling > > up in the local repo or the resolved lib dir > > - I dont want to perform all these cleanup tasks (especially since I dont > > necessarily know the past version numbers) > > - I want resolve/retrieve to just get the latest instance if the publish > > time changed. > > > > Is this possible? Various settings seem to imply this is possible, but > in > > all of my testing I could not get the cache to update without a version > > number change. I was about to change it to write directly into the > cache, > > rather than the local directory, but it seemed wrong since I was now > making > > the updates for ivy. > > > > Thanks in advance for any help, > > > > John > > >