Stephane's thoughts corner…
Stephane Bailliez's thoughts on everything

Absolutely nothing is employed by my Male Impotence am Now Debt Relief Debt Relief i stayed with this issue for all his life?

Put simply, Debt Relief Consumer debt relief the response to it Best electronic cigarette online Njoy npro electronic cigarette Jeux de casino en ligne gratuit bonus casino is an unequivocal no. In right now community, with Generic Cialis Cialis generic uk a variety of Online debt consolidation loan Bad debt consolidation treatment methods readily available, no-one must ever before really Buy Viagra Generic Viagra feel that you have no solution for his Viagra Online Viagra Online or her unique particular sort of Erectile Buy Viagra Viagra online uk Dysfunction. In young gentlemen, it can sometimes be their Levitra 10mg Buy Levitra operation anxiety is so entrenched that Electronic cigarettes for weed Top rated electronic cigarettes even How does online blackjack make money Rigged online blackjack substantial dosage of Viagra, Cialis or Levitra Viagra Online Viagra

September 19, 2006

Spring switching to Maven 2…riiiiiiight

Filed under: OpenSource,Process,Software — stephane @ 12:10 am

The first reaction when I read this was:

Another good piece of software that will lose thousand of hours in build problems.

Why ? because it will go through the same hurdles that large projects such as Apache Directory Server or Apache Geronimo go through just about every day.

Sylvain points at the Cocoon instructions and the most revealing part is actually:

To build Cocoon, use the following command:

$ mvn -Dmaven.test.skip=true install

In case of any failures, repeat command as necessary till you see the message:


which is not a joke and one of the most dramatic aspect of Maven. It is unreliable and unreproductible.

Sylvain already blogged about it extensively and revealed the fact that we are using Ivy to manage our dependencies (which at this time are in the 3-digit figure). A project is indeed only a matter of importing a one-liner build.xml, declaring a name, a version, a package information (for manifest purposes) and ivy.xml.

Interestingly the most annoying elements at this time are due to the extra layer of compatibility with Maven that I needed to insert to offer a painless transition a few months ago. This is something I plan to get rid of very soon now that we are mostly in cruise control mode for this build and I start to see patterns emerging and needs showing up.

Early on, when Maven was initially taken (for no reason at all actually) I spent a lot of time actually getting the dependencies from a reliable source (ie: not ibiblio or whatever but direct from the website). Figuring out the dependencies, rewriting the POM. Anything you get from an online repository is inherently badly written – should it be if it is written by a Maven user that just wanted it on the repo or by the developpers of the module themselves who don’t really know how to write a POM either (there’s no valuable documentation on it, it is extra-verbose as XML attributes seem not to exist in Maven XML land so people tend to get lost and not really update valuable information and/or totally useless information get into the repository)

To describe partly the current build system and without saying too much. I have roughly 2 build files, one being from a normal application that produces a jar, and another one for a web application that imports the ‘normal application’ one and that overrides one target (and define a few others webapp related), a web application producing both a jar and a war.

  • A project has therefore just to import either the normal or the web application one. A one-liner. I provide typical templates to use for build.xml, and ivy.xml, the later having predefined configuration and a set of dependencies to use de-facto (for example servlet-2.4 in compile configuration for webapps, etc…)
  • As of now each project is also publishing its sources and javadocs.
  • The whole set of application is described using a ‘virtual ivy’ file (no artifacts) which allow to have a graph/report of dependencies or build them (I have another build for that which basically does subant calls)
  • It is built using an Ivy build list that determines the order of dependencies.
  • I have a few niceties, like for example I have added a target ‘whoami’ which just print out the name of the project using an <echo> this way you can know easily what is the order of the whole build without actually building it. Seems stupid but it is pretty helpful sometimes. :)
  • It is of course doing the whole unit test she-bang on request and gives coverage information.
  • For webapp, it launch a pluggable servlet container against your war in remote debug mode as a default.

I’m still not satisfied (and people who know me also know that I’m never satisfied) of the current state of affairs and things could be even better and simpler in many many ways.

I just want to make that build simple and reliable. I don’t want it to be a whole kitchen sink that does everything (and nothing), therefore I’m being very careful not to add too many features that people would want (most of the time they just prove themselves unneeded). I first want to make it build in a very predictable way, if something fails, I want to know where it fails and why…and as early as possible (without again writing a truckload of code, properties, conditions, …). This is basically THE goal. It should not make coffee, we have a couple of coffee machines for that. :o)

And for any large build, believe me, you don’t want to have something too smart.

The most difficult thing is to actually cater to different styles and anticipate also the way it evolves and/or control it. A codebase normally goes through a lot of changes in the initial phase, the versioning is also much simpler while this tends to evolve with time to components having their own versioning, branch, tags and stabilize. And it stabilizes only if you are able to control the growth phase.

That said, I’m looking forward to the next release of Ivy 1.4 and Ant 1.7.0 to simplify things even further.

There are a couple of things that can however be improved on Ivy but I will keep that to another post.

As for Spring Framework, let’s just hope that Spring does not turn into Fall.
But good luck guys because you will need it.

My other area where I would like to focus afterwards will be integration and deployment and I think my dear friend Steve has a couple of things I want :)

Oh and btw, Steve is also finishing the 2nd edition of Java Development with Ant (aka jdwa) published at Manning. Believe me you don’t want to miss that one when it will go out and I expect it to have as much success as the very first version. It is satisfying sometimes to know that quantity is synomous of quality.

September 17, 2006

You cannot live in the Netherlands without …

Filed under: Netherlands,Software — stephane @ 7:49 pm

… a bike !

So I bought myself a bike in Decathlon Amsterdam today, no less than something called Triban Trail 7.
It is made by Decathlon Cycle which is known as b’Twin since 2006.

It has a great look and I’m flying….woooooosh. So next time maybe I will do some small cycling from Leiden to Amsterdam and back just to oxygen myself.
One of the great thing in the Netherlands is the fact that you can cycle just about everywhere as you have reserved roads and you have priority.

The bad thing being that apparently, even though there are probably more bikes than people, for some reasons there is a “high crime rate” (ie: bikes get stolen). So …you need a lock…and hope for the best.. I will take the bike to my office anyway :)

Powered by WordPress