On Sun, 2006-08-06 at 22:20 +0200, Roland Weber wrote:
> Hi all,
>
> I've created a new build.xml for HttpAsync. Here are the general ideas.
>
> There are several logical groups of source files. In HttpAsync, these
> are "src/java" (main classes), "src/test" (test classes), "src/contrib"
> (contributions) and "src/examples" (examples). In other components,
> there may be more. For example, HttpCore may split "src/java" in two,
> one which is 1.3 compatible and one for NIO. HttpCore may also split
> "src/contrib" in two, one that does depend on the Spring framework
> and one that doesn't. You get the idea.
>
> For each logical group of source files, there are two targets:
> one compiles source files that have changed, the other one removes the
> compilation result. If you want to force recompilation, you can execute
> the clean target followed by the compilation target. There is also a
> target that combines all logical groups. In HttpAsync, the targets
> for the logical groups are:
> compile-src clean-src
> compile-tests clean-tests
> compile-examples clean-examples
> compile-contrib clean-contrib
> compile-all clean-compile
> The targets for the logical groups do NOT define dependencies.
> That's because I've had problems with unwanted dependencies before.
> If you start from scratch and want to compile the examples, you
> have to compile the main src first. But that's not a big deal,
> as there are more comfortable targets to use anyway.
>
> HttpAsync can assemble two JARs, one for the main classes and one
> for the examples and contributions. These do define dependencies.
> There are two targets for each of these JARs, one that compiles
> only the modified classes and one that enforces recompilation of
> all classes. The latter has a suffix -fs, meaning "from scratch".
> package-src package-src-fs
> package-addon package-addon-fs
> The default target is "package-src". In the old build, it was
> "compile". But I've always considered JARs to be build results
> and compiled classes to be intermediate, temporary files :-)
>
> There are targets to execute unit tests and to run Clover.
> These do define dependencies. For running unit tests, there are
> two targets, one that compiles only the modified classes and one
> that enforces recompilation of all classes. For Clover there is
> only one target that always enforces recompilation, since the
> source needs to be instrumented for this specific occasion.
> run-tests run-tests-fs
> run-clover
> A findbugs target is still missing. I've never used findbugs
> before and I thought learning Clover was enough for today :-)
>
> There are two JavaDoc targets, one for only the "src/java"
> classes and one that additionally includes the examples and
> contributions. JavaDoc does not depend on compiling anymore.
> javadoc-src
> javadoc-addon (including src)
> I've added groups to the JavaDocs to separate API classes,
> implementation classes, examples, and contributions.
>
> There are some more targets for cleanup:
> clean-build - removes ${build.home}
> clean-dist - removes ${dist.home}
> clean-docs - removes ${dist.docs}
> clean-api - removes ${dist.api} (JavaDocs)
>
> And there is a target echo-properties which only prints some
> important Ant properties. That comes in handy if you are defining
> your local build.properties and want to be sure that the values
> are picked up correctly by Ant.
>
> To ease the migration, there is a set of traditional targets:
> compile, package, javadoc, test, clover, clean
>
> I've made some changes to the property names used internally,
> please have a look at the build file if you want to review them.
> The local build properties no longer have a search path as before.
> The properties are read from only one file. The default location
> is in ../project/build.properties, but can be overridden when
> Ant is called:
> > ant -Dlocal.properties=/home/rolandw/http/build.properties
>
> I've changed the default version to "SNAPSHOT", without an
> additional version number. The version numbers are already in
> too many places for my liking. I'm thinking about letting
> Maven call Ant for building in the future, in which case it
> would simply override that property to the correct value.
>
> There are some differences to the build files I write at work.
> The biggest is that I don't have separate compilation and
> packaging targets there. But I've kept that distinction from
> the old build process and Maven. As mentioned above, I am
> thinking about letting Maven call Ant, and then we'll need
> those steps separately.
> Another difference is that at work, I'm generating a timestamp
> file that has the build time in it's name. That file is
> packaged into every JAR below META-INF, so that "jar tf" will
> give access to the timestamp. If the project has a versioning
> scheme, the version is also in the filename. If you like the
> idea, I'll add it here too.
>
> So, that's it for today. Please let me know what you think.
> If we can finish the reviews this week, I would spend some
> time next weekend to move HttpCore and HttpClient to the
> new build process.
>
Roland,
Just a few comments:
(1) Maven should stay the preferred building tool for HttpComponents
(not because I like it that much, but for the consistency sake with the
rest of Jakarta and ASF). Therefore, I would not invest too much efforts
into Ant build file beyond a reasonable minimum.
(2) The 'contrib' and 'example' artifacts (at least to this point) are
meant to be distributed in source as a reference material only. I would
not bother including 'contrib' and 'example' specific tasks into the
build file.
Otherwise, look ok to me
Oleg
> cheers,
> Roland
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]