Obviously, getting things working "out-of-the-box" for the most common 
scenarios will help lower the barrier to adoption for Ivy. Perhaps by 
explaining my use-case, it would help paint a better picture of the path of a 
new user.

I'm dabbling with Ivy as a light-weight method to grab snapshots of a shared 
library which is built with maven2 on our continuous integration server and 
published to our internal repo.

The library is a jar that we want to use in our android projects and we're 
working towards making it open source. Since Android already creates an Ant 
build configuration, it seems to make sense to use Ivy as a method of pulling 
releases/snapshots from our repo for our shared library with minimal intrusion 
into existing projects. This is attractive compared with making our Android 
projects into Maven projects which just requires too much overhead - not only 
for us as an internal company, but also for end users who may not be so savvy 
with dependency management.

From a new-user perspective, it seemed to me that Ivy should do a quick scan of 
the output directory and use the output pattern [artifact]-[revision].[ext] as 
a way of determining if there already existing artifacts copied to this dir and 
if there are, see if we need to delete them because we'll be bringing in a 
different version of the same artifact.

Here's my current workaround which is a bit of a hack..

       <delete>
            <fileset dir="${ivy.lib.dir}" includes="oak-library*"/>
        </delete>
        <ivy:retrieve/>

This will go in an imported ant build file which is to be copied into any 
projects which use the library - works, but not ideal.

I'd rather see Ivy do what I want as a new user right out of the box (or at 
least with a simple flag). Sure, there's always the possibility that the Ivy 
output pattern gets changed and some jars might get left laying around, but I 
think that's a small price to pay to give new users a little more momentum with 
Ivy.

I'm sure I'm only scratching the surface of Ivy capability - I'm by no means an 
expert and not looking to be one. 
But…I imagine once we've got a few projects with these ivy.xml files laying 
around, rather than hunting down the latest version of commons-lang from 
apache's website, we'll be using ivy.xml to bring in new libraries. And by then 
we'll be hooked.

Michael Lake
Senior Software Developer
WillowTree Apps
O 434-326-4341 | M 434.202.9223


On Sep 30, 2011, at 9:39 AM, Kirby Files wrote:

> Michael Lake wrote on 09/30/2011 09:11 AM:
> 
>> let's say I modify my ivy.xml to use a different version of oak, say version 
>> 1.0.4
> [...]
>> 
>> $ ant init-ivy-sync # here's it's doing<ivy:retrieve sync="true" />
>> 
>> $ ls -1 libs/ # as you can see, everything else gets deleted
>> oak-library-1.0.4-javadoc.jar
>> oak-library-1.0.4-sources.jar
>> oak-library-1.0.4.jar
> 
> Yes, that's the way sync=true works. You're telling Ivy that you'd like it to 
> manage the jars in the destination directory.
> 
>> ideally, I'd like to just have the oak-library*.jars change and everything 
>> else be left alone (and no, I don't want to stick my other libs in the 
>> repository)
>> 
>> how can I accomplish this?
> 
> Do you have a proposal as to how you'd like Ivy to know which jars to remove, 
> if you only wanted jars previously retrieved by Ivy deleted? Consider the 
> possible modifications you may have made to ivy.xml or ivysettings.xml:
> 
> * change a module revision
> * change the source repo for the module
> * change the artifacts retrieved for a module
> * remove one or more modules from ivy.xml
> 
> Since the old copy of the ivy.xml isn't available for a diff, where would you 
> keep the data on what jars "belong" to ivy? Keep a file which stores all 
> artifacts downloaded, with filenames, hashes, etc.? Would that file survive a 
> cacheclean? Or would a cacheclean cause ivy to forget what had been 
> previously downloaded? What if a jar already exists with the same name as an 
> artifact Ivy would retrieve, but a different hash? Or a jar with the same 
> module name but no/different revision than ivy would retrieve?
> 
> The current behavior is straightforward to explain and implement, which is a 
> virtue. That said, I imagine the Ivy devs would be willing to consider a 
> patch to a different or additional mode of operation, if you thought through 
> the ramifications, not limited to the ones listed above.
> 
> Thanks,
> ---
> Kirby Files
> Software Architect
> Masergy Communications
> kfi...@masergy.com

Reply via email to