ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean Louis BOUDART <>
Subject Generic build system?
Date Tue, 08 Jul 2008 15:30:04 GMT
Hi All,

I've seen a few time ago on this mailing list a thread about "easy ant", 
but actually there is no implementation of.
I'm currently working on a generic build-system for my  company, and i  
want to share my experience.

History :
Each time we create a new project we have to write a specific build 
script. One of the main issue could be dependencies of the project. 
That's why we use a dependency manager :). Looking for that kind of 
stuff on
the web you can find Maven and  Ivy.

What i like in maven is "conventions" of commands, every projects you'll 
find that use maven uses the same "conventions", so you're never lost.
But what i dislike in maven is that every time you want to do "complex" 
things you have to create "ant" hooks. Maven repository are as cleaner 
as my bedroom :), and quite all the time asking a repository is long 
especially when you consider you are downloading two thousand millions 
of plug ins that you even don't know any existence of.

Hum maybe maven is not the solution that i'm looking for.

That's why I chose to use ivy which is really more powerful and 
flexible. But the main problem is that when one is using  Ant + Ivy 
there is no "conventions",  maybe  i'll name a target called build and 
my neighborhood  will call this target "compile".

I don't want to loose time on writing a new build.xml that use my repo 
on every new project of my company.
That's why i've made a generic build.xml that have all the common task 
we use in "standard" project.
By "common task" i mean :
   - clean
   - build
   - resolve
   - dist (making jar / war / ear)
   - lauch tests
   - generate javadoc
   - jetty-run "a la maven"
   - have dependencies report
   - have a way to add artifiact on my repo
   - generate javadoc
   - generate a skeleton of project (build.xml + + 
ivy.xml + empty src directory)
   - etc... :p

Every project import the common-build system and can use or override 
properties or targets
Exemple: on every web project i can run "ant jetty-run" that 
automatically :
    - resolve dependencies
    - build the application
    - make war
    - download jetty (if it wasn't downloaded before)
    - deploy the war in jetty

And wow miracle i can access my webapp quickly with my favorite webbrowser.

Exemple2: I want to build an signed applet , i'll can override the 
"dist" target to use sign-jar which is specific to "my-applet" project

Exemple3: I have a strange project that use a "non official" repo, maybe 
i'll want to use "common repo" (given by my build-system) and add the 
specific repo only on my project.

The code is still in early beta but you can find it here :

For the moment the code is rather specific my company but can be quickly 
opened and become a really open source project, i'm writing the 
documentation (actually only in french).

So if you're interested by this project, or if you want to give your 
point of view or advices feel free to contact me.


View raw message