ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shawn Castrianni <>
Subject RE: Bootstrap script, fetch prerequisites
Date Thu, 29 Jul 2010 14:37:36 GMT
I use ant, svn, and ivy to handle this issue as well as for a generalized dependency mechanism.
 Originally, my ant launcher script didn't do much more than configure a few env variables
and launch ant.  But just like you, I needed a way to provide my users with updates.  I chose
to use svn.  My entire ant installation with all of my custom build scripts are stored in
svn.  A new user of the build system would first need to checkout a sandbox of that ant build
system.  Then from then on, they can choose to update the sandbox whenever they want to receive
my updates.  Or, their other option is to let the my enhanced ant launcher scripts perform
the auto-update for them on every invocation.  The enhanced launcher scripts will perform
an svn update of their build system sandbox (while still within the batch scripts) BEFORE
ant starts so you don't have to worry about locked files on windows.  I use the java svn command
line client (so that it works on all platforms) that is also checked into the ant build system
sandbox.  To allow the user a choice of when to allow build system updates, he can set a special
environment variable SYSTEM_UPDATE which determines whether the ant launcher scripts perform
the auto-update on every invocation or not.  It not, it is up to the user to update it by
manually running an svn update.

ivy is then used for all other kind of dependencies for the actual building of source code.

Shawn Castrianni

-----Original Message-----
From: Dominique Devienne [] 
Sent: Thursday, July 29, 2010 8:42 AM
To: Ant Users List
Subject: Re: Bootstrap script, fetch prerequisites

On Thu, Jul 29, 2010 at 3:18 AM, Ludwig, Michael
<> wrote:
> What's the best way to bootstrap an Ant script installation? [...]
> (One thing I personally dislike is checking JARs into your version control system, [...]

Well, Ant has no built-in bootstrap mechanism.

Build scripts are typically under version control, but they might use
support files
(typically imported) from other modules of the VCS, and they might use
JARs downloaded
from somewhere or under VCS themselves. If you run checks to verify
for new versions of
files/JARs implicitly on every build, you run the risk of slowing down
all builds, and surprising
your users for changes they didn't want, so I find it nicer to have an
explicit target(s) to do the
checking and updating explicitly. But even that can fail, especially
on Windows, since you can't
update JARs ANT is currently using, and you can't easily force ANT to
use a new version of a
JAR that was just updated.

I believe that bootstrapping is possible, but I think it would require
changes in Ant to possibly
restart a new VM using new JARs for example, or at least rerun itself
into a completely different
class loader (and a way to update JARs already in use on Windows).
Didn't do it myself. --DD

To unsubscribe, e-mail:
For additional commands, e-mail:

This e-mail, including any attached files, may contain confidential and privileged information
for the sole use of the intended recipient.  Any review, use, distribution, or disclosure
by others is strictly prohibited.  If you are not the intended recipient (or authorized to
receive information for the intended recipient), please contact the sender by reply e-mail
and delete all copies of this message.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message