Ivy Informed Requirements & Design

Brian Pontarelli brian at pontarelli.com
Fri Oct 14 08:26:49 PDT 2011


Mark,

I agree that Ivy and others (particularly Savant - although it has collect a lot of dust lately) have really good dependency models and concepts that should be applied to Jigsaw. This was one of my reasons for bringing up the idea of creating a unified format for defining dependencies, resolution, handling, security, etc.

I'm not sure if the Jigsaw team is interested in community participation or standardizing some of these things, but I think it is a great idea and would help all of these projects (Jigsaw, Maven, Ivy, Savant, Gradle, etc) considerably.

-bp


On Oct 14, 2011, at 6:59 AM, Mark R Maxey wrote:

> 
> 
> Hello,
> 
> Like many, I've been following Jigsaw from afar - mainly through the last 2
> year's worth of JavaOne sessions.  Thank you for tackling this immense
> problem.  While I'm just a nobody, I'd like to offer up some concepts for
> your consideration.
> 
> Maven has a large footprint & you've rightly been letting it inform your
> direction.  However, I would suggest a better alternative is Ivy.  Ivy is a
> pure dependency analysis tool independent of Java.  It gives you the
> dependency information and repository management while letting you do with
> it what you want.
> 
> Here are a couple of Ivy features I think are relevant for Jigsaw:
> 
> 
> 
> CI & Build Promotion
> Here is a common use case: multiple teams are working on multiple modules
> concurrently.   Some teams want stability and rely on milestone releases.
> Some teams want to rely on integration / snapshot releases.  This could
> happen, for example, in the JDK where a few related modules are undergoing
> changes by different teams for different reasons simultaneously.
> 
> My concern is that the manual update of the version number in the
> module-info.java file is too cumbersome.  Maven snapshots aren't so bad
> since it is just a static suffix, i.e., "-SNAPSHOT", that would be
> infrequently updated.  However, I prefer Ivy's unique one-up numbers /
> timestamps because of the flexibility to rollback to previous builds.
> 
> Build promotion also needs to be considered.  Hudson/Jenkins is often used
> to promote an integration / snapshot build to a milestone release and a
> milestone to a GA release. Ivy & Maven can also do this.  All of these
> involve changing the version numbers on lots of modules.
> 
> It seems to me that Jigsaw needs some way of easily modifying a module's
> version without rebuilding it.  I'd like to hear your thoughts on how this
> lifecycle would play out under Jigsaw.
> 
> 
> 
> Repositories & Local Caches
> It is great that you are looking to integrate with Maven repositories.
> Here are a few related tidbits from Ivy applicable to Jigsaw:
> 
>   Ivy supports a variety of resolvers for different types of artifact
>   repositories, e.g., URL based, file based, SSH, etc.  It can also chain
>   these together in ways that allow you to specify search order.
>   You should check out the work Gradle is doing on dependency caches.  I'm
>   betting you're going to run into the same problems with Java modules.
>   Ivy also supports a sophisticated set of conflict resolution policies.
>   You can tell Ivy how to extract the GAVC out of the file path.  This
>   allows for a more customizable repository directory structure.
> 
> 
> 
> I understand these are advanced concepts that probably aren't targeted for
> your initial release.  Many may be tasks to leave to 3rd party tool
> vendors.   I simply suggest that you let them inform your roadmap forward.
> 
> 
> Thanks!
> Mark Maxey




More information about the jigsaw-dev mailing list