summaryrefslogtreecommitdiff
path: root/qpid/doc/book/src/Qpid-Java-Build-How-To.xml
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/doc/book/src/Qpid-Java-Build-How-To.xml')
-rw-r--r--qpid/doc/book/src/Qpid-Java-Build-How-To.xml365
1 files changed, 365 insertions, 0 deletions
diff --git a/qpid/doc/book/src/Qpid-Java-Build-How-To.xml b/qpid/doc/book/src/Qpid-Java-Build-How-To.xml
new file mode 100644
index 0000000000..f38109a3fb
--- /dev/null
+++ b/qpid/doc/book/src/Qpid-Java-Build-How-To.xml
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+<section><title>
+ Qpid Java Build How To
+ </title>
+
+ <section role="h1" id="QpidJavaBuildHowTo-BuildInstructionsGeneral"><title>
+ Build
+ Instructions - General
+ </title>
+
+ <section role="h2" id="QpidJavaBuildHowTo-Checkoutthesource"><title>
+ Check out the
+ source
+ </title>
+ <para>
+ Firstly, check the source for Qpid out of our subversion
+ repository:
+ </para><para>
+ <xref linkend="qpid_trunk"/>
+ </para>
+<!--h2--></section>
+ <section role="h2" id="QpidJavaBuildHowTo-Prerequisites"><title>
+ Prerequisites
+ </title>
+ <para>
+ For the broker code you need JDK 1.5.0_15 or later. You should
+ set JAVA_HOME and include the bin directory in your PATH.
+ </para><para>
+ Check it's ok by executing java -v !
+ </para><para>
+ If you are wanting to run the python tests against the broker you
+ will of course need a version of python.
+ </para>
+<!--h2--></section>
+<!--h1--></section>
+
+ <section role="h1" id="QpidJavaBuildHowTo-BuildInstructionsTrunk"><title>
+ Build
+ Instructions - Trunk
+ </title>
+ <para>
+ Our build system has reverted to ant as of May 2008.
+ </para><para>
+ The ant target 'help' will tell you what you need to know about
+ the build system.
+ </para>
+ <section role="h2" id="QpidJavaBuildHowTo-AntBuildScripts"><title>
+ Ant Build
+ Scripts
+ </title>
+ <para>
+ Currently the Qpid java project builds using ant.
+ </para><para>
+ The ant build system is set up in a modular way, with a top level
+ build script and template for module builds and then a module
+ level build script which inherits from the template.
+ </para><para>
+ So, at the top level there are:
+ </para><table><title/><tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ File
+ </entry>
+ <entry>
+ Description
+ </entry>
+ </row>
+ <row>
+ <entry>
+ build.xml
+ </entry>
+ <entry>
+ Top level build file for the project which defines all the
+ build targets
+ </entry>
+ </row>
+ <row>
+ <entry>
+ common.xml
+ </entry>
+ <entry>
+ Common properties used throughout the build system
+ </entry>
+ </row>
+ <row>
+ <entry>
+ module.xml
+ </entry>
+ <entry>
+ Template used by all modules which sets up properties for
+ module builds
+ </entry>
+ </row>
+ </tbody>
+ </tgroup></table><para>
+ Then, in each module subdirectory there is:
+ </para><table><title/><tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ File
+ </entry>
+ <entry>
+ Description
+ </entry>
+ </row>
+ <row>
+ <entry>
+ build.xml
+ </entry>
+ <entry>
+ Defines all the module values for template properties
+ </entry>
+ </row>
+ </tbody>
+ </tgroup></table>
+<!--h2--></section>
+ <section role="h2" id="QpidJavaBuildHowTo-Buildtargets"><title>
+ Build targets
+ </title>
+ <para>
+ The main build targets you are probably interested in are:
+ </para><table><title/><tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ Target
+ </entry>
+ <entry>
+ Description
+ </entry>
+ </row>
+ <row>
+ <entry>
+ build
+ </entry>
+ <entry>
+ Builds all source code for Qpid
+ </entry>
+ </row>
+ <row>
+ <entry>
+ test
+ </entry>
+ <entry>
+ Runs the testsuite for Qpid
+ </entry>
+ </row>
+ </tbody>
+ </tgroup></table><para>
+ So, if you just want to compile everything you should run the
+ build target in the top level build.xml file.
+ </para><para>
+ If you want to build an installable version of Qpid, run the
+ archive task from the top level build.xml file.
+ </para><para>
+ If you want to compile an individual module, simply run the build
+ target from the appropriate module e.g. to compile the broker
+ source
+ </para>
+<!--h2--></section>
+ <section role="h2" id="QpidJavaBuildHowTo-ConfiguringEclipse"><title>
+ Configuring
+ Eclipse
+ </title>
+ <para>
+ 1. Run the ant build from the root directory of Java trunk.
+ 2. New project -&gt; create from existing file system for broker,
+ common, client, junit-toolkit, perftests, systests and each
+ directory under management
+ 4. Add the contents of lib/ to the build path
+ 5. Setup Generated Code
+ 6. Setup Dependencies
+ </para>
+ <section role="h3" id="QpidJavaBuildHowTo-GeneratedCode"><title>
+ Generated Code
+ </title>
+ <para>
+ The Broker and Common packages both depend on generated code.
+ After running 'ant' the build/scratch directory will contain this
+ generated code.
+ For the broker module add build/scratch/broker/src
+ For the common module add build/scratch/common/src
+ </para>
+<!--h3--></section>
+ <section role="h3" id="QpidJavaBuildHowTo-Dependencies"><title>
+ Dependencies
+ </title>
+ <para>
+ These dependencies are correct at the time of writting however,
+ if things are not working you can check the dependencies by
+ looking in the modules build.xml file:
+ </para>
+ <programlisting>
+for i in `find . -name build.xml` ; do echo "$i:"; grep module.depends $i ; done
+</programlisting>
+ <para>
+ The <emphasis>module.depend</emphasis> value will detail which other modules
+ are dependencies.
+ </para><para>
+ broker
+ </para><itemizedlist>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>management/common
+ </para></listitem>
+ </itemizedlist><para>
+ client
+ </para><itemizedlist>
+ <listitem><para>Common
+ </para></listitem>
+ </itemizedlist><para>
+ systest
+ </para><itemizedlist>
+ <listitem><para>client
+ </para></listitem>
+ <listitem><para>management/common
+ </para></listitem>
+ <listitem><para>broker
+ </para></listitem>
+ <listitem><para>broker/test
+ </para></listitem>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>junit-toolkit
+ </para></listitem>
+ <listitem><para>management/tools/qpid-cli
+ </para></listitem>
+ </itemizedlist><para>
+ perftests
+ </para><itemizedlist>
+ <listitem><para>systests
+ </para></listitem>
+ <listitem><para>client
+ </para></listitem>
+ <listitem><para>broker
+ </para></listitem>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>junit-toolkit
+ </para></listitem>
+ </itemizedlist><para>
+ management/eclipse-plugin
+ </para><itemizedlist>
+ <listitem><para>broker
+ </para></listitem>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>management/common
+ </para></listitem>
+ </itemizedlist><para>
+ management/console
+ </para><itemizedlist>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>client
+ </para></listitem>
+ </itemizedlist><para>
+ management/agent
+ </para><itemizedlist>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>client
+ </para></listitem>
+ </itemizedlist><para>
+ management/tools/qpid-cli
+ </para><itemizedlist>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>management/common
+ </para></listitem>
+ </itemizedlist><para>
+ management/client
+ </para><itemizedlist>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>client
+ </para></listitem>
+ </itemizedlist><para>
+ integrationtests
+ </para><itemizedlist>
+ <listitem><para>systests
+ </para></listitem>
+ <listitem><para>client
+ </para></listitem>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>junit-toolkit
+ </para></listitem>
+ </itemizedlist><para>
+ testkit
+ </para><itemizedlist>
+ <listitem><para>client
+ </para></listitem>
+ <listitem><para>broker
+ </para></listitem>
+ <listitem><para>common
+ </para></listitem>
+ </itemizedlist><para>
+ tools
+ </para><itemizedlist>
+ <listitem><para>client
+ </para></listitem>
+ <listitem><para>common
+ </para></listitem>
+ </itemizedlist><para>
+ client/examples
+ </para><itemizedlist>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>client
+ </para></listitem>
+ </itemizedlist><para>
+ broker-plugins
+ </para><itemizedlist>
+ <listitem><para>client
+ </para></listitem>
+ <listitem><para>management/common
+ </para></listitem>
+ <listitem><para>broker
+ </para></listitem>
+ <listitem><para>common
+ </para></listitem>
+ <listitem><para>junit-toolkit
+ </para></listitem>
+ </itemizedlist>
+<!--h3--></section>
+<!--h2--></section>
+
+ <section role="h2" id="QpidJavaBuildHowTo-Whatnext-3F"><title>
+ What next ?
+ </title>
+ <para>
+ If you want to run your built Qpid package, see our <xref linkend="qpid_Getting-Started-Guide"/> for details of
+ how to do that.
+ </para><para>
+ If you want to run our tests, you can use the ant test or
+ testreport (produces a useful report) targets.
+ </para>
+
+<!--h2--></section>
+<!--h1--></section>
+</section>