Return-Path: Delivered-To: apmail-ant-ivy-user-archive@www.apache.org Received: (qmail 62294 invoked from network); 8 Jul 2008 15:31:12 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 8 Jul 2008 15:31:12 -0000 Received: (qmail 28579 invoked by uid 500); 8 Jul 2008 15:31:13 -0000 Delivered-To: apmail-ant-ivy-user-archive@ant.apache.org Received: (qmail 28339 invoked by uid 500); 8 Jul 2008 15:31:12 -0000 Mailing-List: contact ivy-user-help@ant.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ivy-user@ant.apache.org Delivered-To: mailing list ivy-user@ant.apache.org Received: (qmail 28328 invoked by uid 99); 8 Jul 2008 15:31:12 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Jul 2008 08:31:12 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [84.14.148.71] (HELO calamari.linagora.com) (84.14.148.71) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Jul 2008 15:30:19 +0000 Received: from localhost (localhost [127.0.0.1]) by calamari.linagora.com (Postfix) with ESMTP id 7FDB867D77 for ; Tue, 8 Jul 2008 17:30:03 +0200 (CEST) Received: from calamari.linagora.com ([127.0.0.1]) by localhost (calamari.linagora.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23998-06 for ; Tue, 8 Jul 2008 17:30:02 +0200 (CEST) Received: from [10.75.161.153] (unknown [10.75.161.153]) by calamari.linagora.com (Postfix) with ESMTP id 6F60567ACD for ; Tue, 8 Jul 2008 17:30:02 +0200 (CEST) Message-ID: <487387FC.4040804@linagora.com> Date: Tue, 08 Jul 2008 17:30:04 +0200 From: Jean Louis BOUDART User-Agent: Thunderbird 2.0.0.14 (X11/20080505) MIME-Version: 1.0 To: ivy-user@ant.apache.org Subject: Generic build system? Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at linagora.com X-Virus-Checked: Checked by ClamAV on apache.org 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 + build.properties + 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 : http://ejbca-fr.org/svn/build-system/trunk/ 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. Cheers