dev@glassfish.java.net

Re: Glassfish build process: can't it be easier?

From: Jeanfrancois Arcand <Jeanfrancois.Arcand_at_Sun.COM>
Date: Thu, 26 Jan 2006 14:50:11 -0500

Kohsuke Kawaguchi wrote:
>> To make it easier, we need to decide if we want to go with a pure ANT
>> build or move to Maven 2.0 (or stay with Maven 1.x but use Maven as it
>> should). Right now we aren't using Maven the way it should, as Maven
>> under the hood calls Ant. The workspace is quite complex, and moving
>> all build.xml to Maven might take a lot of time.
>>
>> Having a pure Ant or Maven build will make it easier to build.
>
>
> I agree 100% that "a pure Ant or Maven build will make it easier to
> build." But I didn't know that the Glassfish project was still arguing
> about whether to use Maven or not.

Let me decribe the history of why we when to Maven:

+ We didn't have time, due to limited resource, to move all build.xml to
maven.xml. So we are aware from day 1 Maven isn't used as it should
(plus Maven 1.0.3 is buggy :-)). That's a fact, not a complain BTW :-)

+ The goal was to requires Maven, CVS and Java as prerequisite, that's it.

+ Our internal build was using gmake/sh, and we didn't want to force
win32 user to install CYGWIN or any emulator

+ Our previous build was not updating the glassfish installation like it
is doing right now. Before, we were doing:

% cd appserv-http-engine
% gmake build
% cd ../installer
% gmake build
% cd ../publish/Linux.../
% ./setup //re-install all the time after every build.

Now we are doing:

% edit project.properties
% cd appserv-http-engine
% maven bootstrap configure-runtime (only one time)
% maven build

I personaly consider we have simplified the build with what we have
right now.

+ We faced a lot of bugs with Maven 1.0.2, like rmic not working when
invoked from Ant, classloader issue, etc. So we ended up patching Maven
1.0.3 using maven.xml. At the time, Maven 2.0/1.1 wasn't available.

+ We were all confident that we will eventualy move all build.xml. The
when was still pending in the air.

The goal of the current discussion is how to make it simpler, e.g. make
the learning curve easier and faster. Like Qingqing pointed out (correct
me I'm wrong), to achieve our goal, we gonna need to decide what are the
steps we want the developper to execute to make it simpler in comparison
to what we have now. So we need to decide if we do a revolution (like
having a complete new build systems based on Maven 2.0), and building
will eventual require something like :

% maven java:compile jar:jar glassfish:update-image

instead of doing

% maven build

or do an evolution, e.g move away from Maven and use a pure Ant build:

% maven build

to

% ant build

Why, because if we decide to do a revolution, we cannot keep our current
way of building things since we need to align to what Maven is offering.

We need to make our decision based on how we want the build to work, and
this will dictate if Ant or Maven or whatever will be used.


My 0.02$ CAN (not yet QC ;-))

-- Jeanfrancois







>