1
2
3
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Copyright 2004-2008 H2 Group. Multiple-Licensed under the H2 License, Version 1.0,,
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 />
<br /><a name="portability"></a>
<h2>Portability</h2>
<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>
<br /><a name="environment"></a>
<h2>Environment</h2>
<p>
A Java Runtime Environment (JRE) version 1.4 or higher is required to run this database.
</p>
<p>
To build the database executables, the following software stack was used.
Newer version or compatible software works too.
</p>
<ul><li>Windows XP
</li><li>Sun JDK Version 1.4 and 1.6
</li><li>Eclipse Version 3.3
</li><li>Eclipse Plugins: Subclipse 1.2.4, EclEmma Java Code Coverage 1.3.0, Eclipse Checkstyle Plug-in 4.4.0
</li><li>Mozilla Firefox 3.0
</li><li>OpenOffice 3.0
</li><li>NSIS 2.38 (Nullsoft Scriptable Install System)
</li><li>Maven 2.0.7
</li><li>YourKit Java Profiler
</li></ul>
<br /><a name="building"></a>
<h2>Building the Software</h2>
<p>
On the command line, go to the directory h2 and execute the following command:
</p>
<pre>
build -?
</pre>
<p>
You will get a list of targets. If you want to build the jar file, execute:
</p>
<pre>
build jar
</pre>
<br /><a name="build_targets"></a>
<h2>Build Targets</h2>
<p>
The build system can generate smaller jar files as well. The following targets are currently supported:
</p>
<ul><li>jarClient: Create the h2client.jar. This only contains the remote JDBC implementation.
</li><li>jarSmall: Create the file h2small.jar. This only contains the embedded database. Debug information is disabled.
</li><li>jarJaqu: Create the file h2jaqu.jar. This only contains the JaQu (Java Query) implementation. All other jar files do not include JaQu.
</li></ul>
<p>
To create the h2client.jar file, go to the directory h2 and execute the following command:
</p>
<pre>
build jarClient
</pre>
<br /><a name="maven2"></a>
<h2>Using Maven 2</h2>
<h3>Using a Central Repository</h3>
<p>
You can include the database in your Maven 2 project as a dependency.
Example:
</p>
<pre>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${version}</version>
</dependency>
</pre>
<p>
New versions of this database are first uploaded to http://hsql.sourceforge.net/m2-repo/ and then automatically
synchronized with the main maven repository; however after a new release it may take a few hours before
they are available there.
</p>
<h3>Using Snapshot Version</h3>
<p>
To build a 'snapshot' H2 .jar file and upload it the to the local Maven 2 repository, execute the following command:
</p>
<pre>
build mavenInstallLocal
</pre>
<p>
Afterwards, you can include the database in your Maven 2 project as a dependency:
</p>
<pre>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</pre>
<br /><a name="translating"></a>
<h2>Translating</h2>
<p>
The translation of this software is split into the following parts:
</p>
<ul>
<li>H2 Console: src/main/org/h2/server/web/res/_text_*.properties
</li><li>Error messages: src/main/org/h2/res/_messages_*.properties
</li><li>Web site: src/docsrc/text/_docs_*.utf8.txt
</li></ul>
<p>
The conversion between UTF-8 and Java encoding (using the \u syntax), as well as the HTML entities (&#..;)
is automated by running the tool PropertiesToUTF8. The web site translation is automated as well,
using <code>build docs</code>.
</p>
<br /><a name="providing_patches"></a>
<h2>Providing Patches</h2>
<p>
If you like to provide patches, please consider the following guidelines to simplify merging them:
</p>
<ul><li>Only use Java 1.4 features (not use Java 1.5 or 1.6) (see Environment).
</li><li>Follow the coding style used in the project, use Checkstyle (see above) to check the coding style.
</li><li>Please provide test cases and integrate them into the test suite.
For Java level tests, see src/test/org/h2/test/TestAll.java.
For SQL level tests, see src/test/org/h2/test/test.in.txt or testSimple.in.txt
</li><li>The test cases should cover at least 90% of the changed/new code; use a code coverage tool to verify that (see above).
</li><li>Verify that you did not break other features: Run the test cases by executing build test.
</li><li>Provide end user documentation if required (src/docsrc/html/*).
</li><li>Document grammar changes in src/main/org/h2/res/help.csv
</li><li>Provide a change log entry (src/docsrc/html/changelog.html).
</li><li>Submit patches as .patch files (compressed if big). To create a patch, use for example Eclipse Team/Create Patch.
</li></ul>
<!-- [close] { --></div></td></tr></table><!-- } --><!-- analytics --></body></html>