Some optimizations to the replace(), remove() and removeAll() methods + removed ...
[sqlitemap.git] / build.xml
blobfe4931a00004873f83041ff1b7364908344c395e
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project name="SQLiteMap" default="all" basedir=".">
3     <fail message="Java version is &quot;${ant.java.version}&quot;, but version &quot;17&quot; is expected!">
4         <condition>
5             <not><equals arg1="${ant.java.version}" arg2="17"/></not>
6         </condition>
7     </fail>
9     <property environment="env"/>
11     <tstamp>
12         <format property="build.date" pattern="yyyy-MM-dd" timezone="UTC" locale="en"/>
13         <format property="build.time" pattern="HH:mm:ss"   timezone="UTC" locale="en"/>
14     </tstamp>
16     <property name="base" location="."/>
17     <property name="src" location="src"/>
18     <property name="test" location="test"/>
19     <property name="lib" location="lib"/>
20     <property name="build" location="bin"/>
21     <property name="doc" location="docs"/>
22     <property name="dist" location="dist"/>
24     <target name="all" depends="clean,dist" description="default target for clean+dist">
25         <echo message="Everything is completed."/>
26     </target>
28     <target name="init" description="initialize paths">
29         <echo message="Base directory: &quot;${base}&quot;"/>
30         <mkdir dir="${build}"/>
31         <mkdir dir="${doc}"/>
32         <mkdir dir="${dist}"/>
33     </target>
35     <target name="bootpath" description="determine root class path">
36         <fail unless="env.JDK8_BOOT_PATH">Environment variable 'JDK8_BOOT_PATH' not found!</fail>
37         <property name="bootclass.path" location="${env.JDK8_BOOT_PATH}"/>
38         <fail message="JDK 1.8 boot class path &quot;${env.JDK8_BOOT_PATH}&quot; not found!">
39             <condition>
40                 <not><available file="${bootclass.path}"/></not>
41             </condition>
42         </fail>
43         <echo message="JDK8_BOOT_PATH: &quot;${bootclass.path}&quot;"/>
44     </target>
46     <target name="compile" depends="init,bootpath" description="compile the source">
47         <javac srcdir="${src}" destdir="${build}" bootclasspath="${bootclass.path}" includeantruntime="false" debug="off" target="1.8" source="1.8" verbose="true"/>
48     </target>
50     <target name="compile-test" depends="compile" description="compile the test sources">
51         <fail message="Library &quot;junit-jupiter-api&quot; is missing!">
52             <condition><resourcecount count="1" when="lt">
53                 <fileset id="junit-jupiter-api" dir="${lib}" includes="junit-jupiter-api-5*.jar"/>
54             </resourcecount></condition>
55         </fail>
56         <javac srcdir="${test}" destdir="${build}" includes="**/test/**/*.java" includeantruntime="false" debug="on" verbose="true">
57             <classpath>
58                 <pathelement path="${build}"/>
59                 <fileset refid="junit-jupiter-api"/>
60                 <fileset dir="${lib}" includes="apiguardian-api-1*.jar"/>
61             </classpath>
62         </javac>
63     </target>
65     <target name="version" depends="compile" description="read the version info">
66         <loadproperties encoding="iso-8859-1" prefix="sqlitemap" srcfile="${build}/com/muldersoft/container/sqlite/SQLiteMap.class">
67             <filterchain><classconstants/></filterchain>
68         </loadproperties>
69         <fail unless="sqlitemap.VERSION_MAJOR">Property 'VERSION_MAJOR' was not found!</fail>
70         <fail unless="sqlitemap.VERSION_MINOR">Property 'VERSION_MINOR' was not found!</fail>
71         <fail unless="sqlitemap.VERSION_PATCH">Property 'VERSION_PATCH' was not found!</fail>
72         <property name="version.full" value="${sqlitemap.VERSION_MAJOR}.${sqlitemap.VERSION_MINOR}.${sqlitemap.VERSION_PATCH}"/>
73         <echo message="Version: ${version.full}"/>
74     </target>
76     <target name="git-rev" description="detect the current git revision">
77         <exec executable="git" dir="${base}" outputproperty="git.revision.commit" failonerror="yes">
78             <arg value="rev-parse"/><arg value="HEAD"/>
79         </exec>
80         <exec executable="git" dir="${base}" outputproperty="git.revision.branch" failonerror="yes">
81             <arg value="rev-parse"/><arg value="--abbrev-ref"/><arg value="HEAD"/>
82         </exec>
83         <echo message="Git Revision: ${git.revision.branch}-${git.revision.commit}"/>
84     </target>
86     <target name="git-arch" depends="init" description="archive git source tree as file">
87         <mkdir dir="${dist}/src"/>
88         <property name="git.archive.file" value="${dist}/src/sqlite-map-HEAD.zip"/>
89         <delete file="${git.archive.file}"/>
90         <exec executable="git" dir="${base}" failonerror="yes">
91             <arg value="archive"/><arg value="--verbose"/><arg value="--format=zip"/><arg value="--output=${git.archive.file}"/><arg value="HEAD"/>
92         </exec>
93     </target>
95     <target name="javadoc" depends="init,bootpath" description="generate documentation">
96         <javadoc sourcepath="${src}" destdir="${doc}" bootclasspath="${bootclass.path}" source="1.8" access="protected" doctitle="SQLiteMap" windowtitle="SQLiteMap" failonerror="yes">
97             <bottom>Created by LoRd_MuldeR &amp;lt;mulder2@gmx.de&amp;gt; | License: CC0 1.0 Universal</bottom>
98         </javadoc>
99     </target>
101     <target name="manifest" depends="version,git-rev" description="generate the manifest">
102         <property name="manifest.file" value="${build}/META-INF/MANIFEST.MF"/>
103         <echo message="File: &quot;${manifest.file}&quot;"/>
104         <truncate file="${manifest.file}" create="true" mkdirs="true"/>
105         <manifest file="${manifest.file}">
106             <attribute name="Build-Date" value="${build.date}"/>
107             <attribute name="Build-Revision" value="${git.revision.branch}-${git.revision.commit}"/>
108             <attribute name="Build-Time" value="${build.time}"/>
109             <attribute name="Bundle-License" value="https://creativecommons.org/publicdomain/zero/1.0/"/>
110             <attribute name="Bundle-Name" value="SQLiteMap"/>
111             <attribute name="Bundle-SymbolicName" value="com.muldersoft.container.sqlite"/>
112             <attribute name="Bundle-Version" value="${version.full}"/>
113             <attribute name="Implementation-Title" value="SQLiteMap"/>
114             <attribute name="Implementation-Vendor" value="LoRd_MuldeR &lt;mulder2@gmx.de&gt;"/>
115             <attribute name="Implementation-Version" value="${version.full}"/>
116             <attribute name="Specification-Title" value="SQLiteMap"/>
117             <attribute name="Specification-Vendor" value="LoRd_MuldeR &lt;mulder2@gmx.de&gt;"/>
118             <attribute name="Specification-Version" value="${version.full}"/>
119         </manifest>
120     </target>
122     <target name="jar" depends="compile,manifest,javadoc" description="generate the jar files">
123         <mkdir dir="${dist}/jar"/>
124         <property name="jar.file.bin" value="${dist}/jar/sqlite-map-${version.full}.jar"/>
125         <delete file="${jar.file.bin}"/>
126         <jar jarfile="${jar.file.bin}" manifest="${manifest.file}">
127             <fileset dir="${build}" includes="**/*.class" excludes="**/test/**"/>
128         </jar>
129         <property name="jar.file.doc" value="${dist}/jar/sqlite-map-${version.full}-javadoc.jar"/>
130         <delete file="${jar.file.doc}"/>
131         <jar jarfile="${jar.file.doc}" manifest="${manifest.file}">
132             <fileset dir="${doc}" includes="**/*"/>
133         </jar>
134         <property name="jar.file.src" value="${dist}/jar/sqlite-map-${version.full}-sources.jar"/>
135         <delete file="${jar.file.src}"/>
136         <jar jarfile="${jar.file.src}" manifest="${manifest.file}">
137             <fileset dir="${src}" includes="**/*.java" excludes="**/test/**"/>
138         </jar>
139     </target>
141     <target name="dist" depends="jar,git-arch" description="generate the zip files for distribution">
142         <property name="zip.file.bin" value="${dist}/sqlite-map-${version.full}-bin.zip"/>
143         <delete file="${zip.file.bin}"/>
144         <zip destfile="${zip.file.bin}">
145             <fileset file="${jar.file.bin}"/>
146             <fileset file="${jar.file.doc}"/>
147             <fileset file="${jar.file.src}"/>
148             <zipfileset prefix="docs" dir="${doc}" includes="**/*"/>
149             <fileset file="${base}/README.md"/>
150             <fileset file="${base}/LICENSE.txt"/>
151         </zip>
152         <property name="zip.file.src" value="${dist}/sqlite-map-${version.full}-src.zip"/>
153         <delete file="${zip.file.src}"/>
154         <zip destfile="${zip.file.src}">
155             <zipfileset src="${git.archive.file}"/>
156         </zip>
157     </target>
159     <target name="clean" depends="init" description="clean up build files">
160         <delete includeemptydirs="true" verbose="true">
161             <fileset dir="${build}" includes="**/*" excludes=".gitkeep"/>
162             <fileset dir="${doc}"   includes="**/*" excludes=".gitkeep"/>
163             <fileset dir="${dist}"  includes="**/*" excludes=".gitkeep"/>
164         </delete>
165     </target>
166 </project>