Greetings, all,

Now that evolutionary sensor data types will no longer be occupying my full attention, I've decided to plunge into the redesign of our Ant build system. I've done some initial work, and have already obtained some interesting results:

* Converting the <antcall> into a <macrodef> for the checkProperties task reduced the time required for a quickStart on my laptop from 12 seconds to 3 seconds.

* I am now investigating the use of <import> and <macrodef> as a way to eliminate all <ant> and <antcall> indirection. Basically, this design uses <import> to effectively create one giant build file. This has fairly profound implications for the structure of the Hackystat build system. If I can pull it off, it will result in simplified build structure: there will no longer be the somewhat complex call-backs between local.build.xml, build.xml, and build.utils.xml that exist in the current system. It should also result in performance improvements. The cost (and, as usual, nothing comes for free) is that the local.build.xml files will contain more tasks than they did before, and adding a new feature (such as doxygen) will require changes to all local.build.xml files (which was not always the case before). However, the ability to use <macrodef> will make most these changes simple one line additions to each local.build.xml.

* All references to specific module tasks will be encapsulated into a single modules.build.xml file. In the initial phase of redesign, this file continues to be hand-written in the traditional fashion. In phase II, it will be autogenerated using XSLT, simplifying external extension of the build system.

I have created a 'version7' subdirectory in hackyBuild where I'm doing all the work, so there should be no impact on the current build system. I will also be creating v7.local.build.xml files in various non-hackyBuild modules as work proceeds. Eventually, it should be possible to cd into hackyBuild/version7 and invoke ant from there to build the system. Only after we're satisfied that everything is stable will we cut-over.

I'd like to think that I could have a preliminary version ready for review in a week or so, but I haven't waded in far enough yet to know how long this will take.

Oh, and the new system requires ant 1.6.5, and will use the -source 1.4 option to <javac> to allow Hackystat to build cleanly with either jdk 1.4 or 1.5.

Cheers,
Philip

Reply via email to