poi/build.xml

172 lines
7.2 KiB
XML

<?xml version="1.0"?>
<!DOCTYPE project [
<!ENTITY preinit-target SYSTEM "./tools/targets/preinit.xtarget">
<!ENTITY init-target SYSTEM "./tools/targets/init.xtarget">
<!ENTITY compile-target SYSTEM "./tools/targets/compile.xtarget">
<!ENTITY interactive-target SYSTEM "./tools/targets/interactive.xtarget">
<!ENTITY scratchpad-target SYSTEM "./tools/targets/scratchpad.xtarget">
<!ENTITY contrib-target SYSTEM "./tools/targets/contrib.xtarget">
<!ENTITY util-target SYSTEM "./tools/targets/util.xtarget">
<!ENTITY dev-target SYSTEM "./tools/targets/dev.xtarget">
<!ENTITY test-target SYSTEM "./tools/targets/test.xtarget">
<!ENTITY robot-target SYSTEM "./tools/targets/robot.xtarget">
<!ENTITY docs-target SYSTEM "./tools/targets/docs.xtarget">
]>
<project default="interactive" basedir="." name="krysalis">
<!-- ===========================================================================
* ===================================== *
| Krysalis Centipede Build System |
* ===================================== *
by
Nicola Ken Barozzi <barozzi@nicolaken.com>
Marc Johnson <mjohnson at apache dot org>
extends the Apache Cocoon Build System
(http://xml.apache.org/cocoon/)
by
Stefano Mazzocchi <stefano@apache.org>
Carsten Ziegeler <cziegeler@apache.org>
Installing the build tools
==========================
The Krysalis build system is based on Apache Ant, which is a Java building tool
originally developed for the Tomcat project but now used in many other
Apache projects and extended by many developers.
Ant is a little but very handy tool that uses a build file written in XML
(this file) as building instructions. For more information refer to
"http://jakarta.apache.org/ant/".
To make things easier for you, this distribution contains a precompiled
version of Ant and the build scripts take care of running it.
The only thing that you have to make sure, is the "JAVA_HOME" environment
property should be set to match the JVM you want to use.
That's all you have to do to be ready to go.
Building instructions
=====================
First, make sure your current working directory is where this very file
is located. Then type
./build.sh (unix)
.\build.bat (win32)
if everything is right and all the required packages are visible, this action
will start the build and prompt you with options.
Note, that if you do further development, compilation time is reduced since
Ant is able of detecting which files have changed and to recompile them at need.
Also, you'll note that reusing a single JVM instance for each task, increases
tremendously the performance of the whole build system, compared to other
tools (i.e. make or shell scripts) where a new JVM is started for each task.
Building on another directory
=============================
Sometimes you might want to build on an external directory to keep the
distribution clean: no worries, this is just an environment property away.
Suppose you want to use the "../build" directory instead, you simply tipe
[unix] ./build.sh -Dbuild.root=../build
[win32] .\build.bat -Dbuild.root=..\build
By using the -Dxxx=yyy argument, you are setting environments in the JVM: Ant
is designed to give higher priority to system environments to allow you to
modify _any_ <property> that you can find in the building instructions below,
so it's just a matter of understanding what property you want to change
and you don't have to touch this file (which you shouldn't need to do).
Build targets
=============
The build system is not only responsible of compiling the project into a jar
file, but is also responsible for creating the HTML documentation, javadocs,
distributions and web site. In fact, the file you have here is _exactly_ what
is used by project maintainers to take care of everything in the project,
no less and no more.
To know more about the available targets take a look at this file, which is
pretty self-explanatory.
To see al list of all targets, type
[unix] ./build.sh -projecthelp
[win32] .\build.bat -projecthelp
Build Dependencies
==================
Some components are optional and require special jar files to be compiled
and added to the application. Some of these jars are already included
in the distribution while others not.
For each optional package which is not available, a warning can be
printed. If you don't like these warnings, specify the property "omit.opt.warnings"
(build -Domit.opt.warnings).
Distribution Version
====================
When preparing a distribution for release, specify the version ID on
the command line: -Dversion="dev-1.2.1", for example.
Specifying a subset of unit tests to be executed
================================================
Specify the package on the command line:
-Dtest.specific="org.krysalis.p.testme" will select only the testme
tests to be run. If you've run any other unit tests in a prior
session, you'll need to specify the 'clean' target to remove
extraneous test classes from execution:
./build.sh clean test -Dtest.specific="org/krysalis/p/testme"
or
.\build.bat clean test -Dtest.specific="org/krysalis/p/testme"
Happy hacking from the Dev Team :)
============================================================================ -->
<!-- =================================================================== -->
<!-- external reference are relative to to tools/targets/*.xtarget -->
<!-- =================================================================== -->
<!-- Pre Initialization --> &preinit-target;
<!-- =================================================================== -->
<!-- Initialization targets --> &init-target;
<!-- =================================================================== -->
<!-- Compile targets --> &compile-target;
<!-- =================================================================== -->
<!-- Interactive targets --> &interactive-target;
<!-- =================================================================== -->
<!-- Scratchpad targets --> &scratchpad-target;
<!-- =================================================================== -->
<!-- Contrib targets --> &contrib-target;
<!-- =================================================================== -->
<!-- Utility targets --> &util-target;
<!-- =================================================================== -->
<!-- Developer targets --> &dev-target;
<!-- =================================================================== -->
<!-- Testcases targets --> &test-target;
<!-- =================================================================== -->
<!-- "Scripts" targets --> &robot-target;
<!-- =================================================================== -->
<!-- Documentation targets --> &docs-target;
<!-- =================================================================== -->
</project>
<!-- End of file -->