Jonathan Roberts wrote:
Hello,

I'm trying to configure ivy/ant to unzip bundles when a new one is
downloaded.  I've got:
<triggers>
        <ant-call target="unzip-dependency" prefix="zip"
                  event="post-download-artifact" filter="type=zip AND
status=successful"/>
</triggers>

That works, when the file is downloaded the first time, but I'd like to
have a trigger that gives me a zip when it's copied from cache.  Also,
since the ivy settings is shared across several projects, if
unzip-dependency doesn't exist, the build fails.

Is there a way to have the <trigger> or <ant-call> task not run if the
task doesn't exist? Or maybe fail gracefully without killing the build?

You can just define an empty unzip-dependency task. If you have a shared build script (included in your project files with <include>), you can can put it there, and override it as necessary in any build scripts that do need to unzip.

Is there a way to have a trigger that fires with all the newly copied
zips (from cache, not just downloaded to cache)

You mean a post-retrieve trigger? I couldn't find such a thing.

What's the best practice on this?  Am I just going about it the wrong
way?

In the absense of a post-retrieve-artifact trigger, I do it in my ant script, and don't get ivy involved in unzipping things at all. e.g. in shared build script:

<ivy:retrieve .../>
<antcall target="post_retrieve_dependencies"/>

///

<target name="post_retrieve_dependencies" description="override to do any post-retrieve steps, such as unzipping dependencies"/>

Then individual build scripts that need to can override post_resolve_dependencies to do what they want.

Tom

Reply via email to