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
> >
>

Reply via email to