build.html 9.2 KB
Newer Older
1 2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Thomas Mueller's avatar
Thomas Mueller committed
3
Copyright 2004-2009 H2 Group. Multiple-Licensed under the H2 License, Version 1.0,
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
and under the Eclipse Public License, Version 1.0
(http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Build
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<!-- [search] { -->
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
<!-- } -->

<h1>Build</h1>
<a href="#portability">
    Portability</a><br />
<a href="#environment">
    Environment</a><br />
<a href="#building">
    Building the Software</a><br />
<a href="#build_targets">
    Build Targets</a><br />
<a href="#maven2">
    Using Maven 2</a><br />
<a href="#translating">
    Translating</a><br />
<a href="#providing_patches">
    Providing Patches</a><br />
33 34
<a href="#automated">
    Automated Build</a><br />
35

Thomas Mueller's avatar
Thomas Mueller committed
36
<h2 id="portability">Portability</h2>
37 38 39 40
<p>
This database is written in Java and therefore works on many platforms.
It can also be compiled to a native executable using GCJ.
</p>
41 42 43 44
<p>
For Java 1.4, the jar file needs to be converted first using
<a href="http://retrotranslator.sourceforge.net">Retrotranslator</a>.
</p>
45

Thomas Mueller's avatar
Thomas Mueller committed
46
<h2 id="environment">Environment</h2>
47
<p>
Thomas Mueller's avatar
Thomas Mueller committed
48
A Java Runtime Environment (JRE) version 1.5 or higher is required to run this database.
49 50 51 52 53
</p>
<p>
To build the database executables, the following software stack was used.
Newer version or compatible software works too.
</p>
54
<ul><li>Mac OS X and Windows XP
Thomas Mueller's avatar
Thomas Mueller committed
55
</li><li><a href="http://java.sun.com/javase/downloads">Sun JDK Version 1.5 and 1.6</a>
56 57 58 59 60 61 62 63 64 65
</li><li><a href="http://www.eclipse.org">Eclipse Version 3.4</a>
</li><li>Eclipse Plugins:
    <a href="http://subclipse.tigris.org">Subclipse 1.4.6</a>,
    <a href="http://eclipse-cs.sourceforge.net">Eclipse Checkstyle Plug-in 4.4.2</a>,
    <a href="http://www.eclemma.org">EclEmma Java Code Coverage 1.3.0</a>
</li><li><a href="http://emma.sourceforge.net">Emma Java Code Coverage</a>
</li><li><a href="http://www.mozilla.com/firefox">Mozilla Firefox 3.0</a>
</li><li><a href="http://www.openoffice.org">OpenOffice 3.0</a>
</li><li><a href="http://nsis.sourceforge.net">NSIS 2.38</a> (Nullsoft Scriptable Install System)
</li><li><a href="http://maven.apache.org">Maven 2.0.9</a>
66 67
</li></ul>

Thomas Mueller's avatar
Thomas Mueller committed
68
<h2 id="building">Building the Software</h2>
69
<p>
Thomas Mueller's avatar
Thomas Mueller committed
70
You need to install a JDK, for example the Sun JDK version 1.5 or 1.6.
71 72 73
Ensure that Java binary directory is included in the <code>PATH</code> environment variable, and that
the environment variable <code>JAVA_HOME</code> points to your Java installation.
On the command line, go to the directory <code>h2</code> and execute the following command:
74
</p>
75
<pre>
76 77 78
build -?
</pre>
<p>
79
For Linux and OS X, use <code>./build.sh</code> instead of <code>build</code>.
80 81
</p>
<p>
82
You will get a list of targets. If you want to build the <code>jar</code> file, execute (Windows):
83
</p>
84
<pre>
85 86 87 88 89
build jar
</pre>

<h3>Switching the Source Code</h3>
<p>
Thomas Mueller's avatar
Thomas Mueller committed
90
By default the source code uses Java 1.5 features, however Java 1.6 is supported as well.
91
To switch the source code to the installed version of Java, run:
92
</p>
93
<pre>
94 95 96
build switchSource
</pre>

Thomas Mueller's avatar
Thomas Mueller committed
97
<h2 id="build_targets">Build Targets</h2>
98 99 100
<p>
The build system can generate smaller jar files as well. The following targets are currently supported:
</p>
101 102 103 104
<ul><li><code>jarClient</code>
    creates the file <code>h2client.jar</code>. This only contains the JDBC client.
</li><li><code>jarSmall</code>
    creates the file <code>h2small.jar</code>.
105
    This only contains the embedded database. Debug information is disabled.
106 107
</li><li><code>jarJaqu</code>
    creates the file <code>h2jaqu.jar</code>.
108
    This only contains the JaQu (Java Query) implementation. All other jar files do not include JaQu.
109
</li><li><code>javadocImpl</code> creates the Javadocs of the implementation.
110 111
</li></ul>
<p>
112
To create the file <code>h2client.jar</code>, go to the directory <code>h2</code> and execute the following command:
113
</p>
114
<pre>
115 116 117
build jarClient
</pre>

Thomas Mueller's avatar
Thomas Mueller committed
118
<h2 id="maven2">Using Maven 2</h2>
119 120 121 122 123
<h3>Using a Central Repository</h3>
<p>
You can include the database in your Maven 2 project as a dependency.
Example:
</p>
124
<pre>
125 126 127 128 129 130 131 132
&lt;dependency&gt;
    &lt;groupId&gt;com.h2database&lt;/groupId&gt;
    &lt;artifactId&gt;h2&lt;/artifactId&gt;
    &lt;version&gt;${version}&lt;/version&gt;
&lt;/dependency&gt;
</pre>
<p>
New versions of this database are first uploaded to http://hsql.sourceforge.net/m2-repo/ and then automatically
133
synchronized with the main Maven repository; however after a new release it may take a few hours before
134 135 136 137 138
they are available there.
</p>

<h3>Using Snapshot Version</h3>
<p>
139
To build a <code>h2-*-SNAPSHOT.jar</code> file and upload it the to the local Maven 2 repository, execute the following command:
140
</p>
141
<pre>
142 143 144 145 146
build mavenInstallLocal
</pre>
<p>
Afterwards, you can include the database in your Maven 2 project as a dependency:
</p>
147
<pre>
148 149 150 151 152 153 154
&lt;dependency&gt;
    &lt;groupId&gt;com.h2database&lt;/groupId&gt;
    &lt;artifactId&gt;h2&lt;/artifactId&gt;
    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
&lt;/dependency&gt;
</pre>

Thomas Mueller's avatar
Thomas Mueller committed
155
<h2 id="translating">Translating</h2>
156 157 158 159
<p>
The translation of this software is split into the following parts:
</p>
<ul>
160 161 162
<li>H2 Console: <code>src/main/org/h2/server/web/res/_text_*.properties</code>
</li><li>Error messages: <code>src/main/org/h2/res/_messages_*.properties</code>
</li><li>Web site: <code>src/docsrc/text/_docs_*.utf8.txt</code>
163 164
</li></ul>
<p>
165
To translate the H2 Console, start it and select Preferences / Translate.
166 167 168
The conversion between UTF-8 and Java encoding (using the <code>\u</code> syntax),
as well as the HTML entities (<code>&amp;#..;</code>)
is automated by running the tool <code>PropertiesToUTF8</code>.
169
The web site translation is automated as well,
170
using <code>build docs</code>.
171 172
</p>

Thomas Mueller's avatar
Thomas Mueller committed
173
<h2 id="providing_patches">Providing Patches</h2>
174 175 176
<p>
If you like to provide patches, please consider the following guidelines to simplify merging them:
</p>
177
<ul><li>Only use Java 1.5 features (do not use Java 1.6) (see <a href="#environment">Environment</a>).
178 179
</li><li>Follow the coding style used in the project, and use Checkstyle (see above) to verify.
    For example, do not use tabs (use spaces instead).
180
    The checkstyle configuration is in <code>src/installer/checkstyle.xml</code>.
181
</li><li>Please provide test cases and integrate them into the test suite.
182 183 184
    For Java level tests, see <code>src/test/org/h2/test/TestAll.java</code>.
    For SQL level tests, see <code>src/test/org/h2/test/test.in.txt</code> or
    <code>testSimple.in.txt</code>.
185 186
</li><li>The test cases should cover at least 90% of the changed and new code;
    use a code coverage tool to verify that (see above).
187
    or use the build target <code>coverage</code>.
188
</li><li>Verify that you did not break other features: run the test cases by executing
189 190
    <code>build test</code>.
</li><li>Provide end user documentation if required (<code>src/docsrc/html/*</code>).
191
</li><li>Document grammar changes in <code>src/docsrc/help/help.csv</code>
192 193 194
</li><li>Provide a change log entry (<code>src/docsrc/html/changelog.html</code>).
</li><li>Verify the spelling using <code>build spellcheck</code>. If required
    add the new words to <code>src/tools/org/h2/build/doc/dictionary.txt</code>.
195
</li><li>Run <code>src/installer/buildRelease</code> to find and fix formatting errors.
196 197 198
</li><li>Verify the formatting using <code>build docs</code> and
    <code>build javadoc</code>.
</li><li>Submit patches as <code>.patch</code> files (compressed if big).
199
    To create a patch using Eclipse, use Team / Create Patch.
200
</li></ul>
201 202 203 204 205 206
<p>
For legal reasons, patches need to be public in the form of an email to the
<a href="http://groups.google.com/group/h2-database">group</a>, or in the form
of an <a href="http://code.google.com/p/h2database/issues/list">issue report or attachment</a>.
Significant contributions need to include the following statement:
</p>
207
<p>
208 209 210
"I wrote the code, it's mine, and I'm contributing it to H2 for distribution
multiple-licensed under the H2 License, version 1.0, and under the
Eclipse Public License, version 1.0 (http://h2database.com/html/license.html)."
211
</p>
212

Thomas Mueller's avatar
Thomas Mueller committed
213
<h2 id="automated">Automated Build</h2>
214
<p>
215
This build process is automated and runs regularly.
216
The build process includes running the tests and code coverage, using the command line
217
<code>./build.sh clean jar coverage -Dh2.ftpPassword=... uploadBuild</code>.
218
The last results are available here:
219
</p>
220 221 222
<ul><li><a href="http://h2database.com/html/testOutput.html">Test Output</a>
</li><li><a href="http://h2database.com/coverage/overview.html">Code Coverage Summary</a>
</li><li><a href="http://h2database.com/coverage/coverage.zip">Code Coverage Details (download, 1.3 MB)</a>
223 224
</li><li><a href="http://www.h2database.com/automated/newsfeed.xml">Build Newsfeed</a>
</li><li><a href="http://www.h2database.com/automated/h2-latest.jar">Latest Jar File (download, 1 MB)</a>
225 226
</li></ul>

227 228
<!-- [close] { --></div></td></tr></table><!-- } --><!-- analytics --></body></html>