1 <?xml version="1.0" encoding="UTF-8"?>
2 <project name="SQLiteMap" default="all" basedir=".">
3 <fail message="Java version is "${ant.java.version}", but version "17" is expected!">
5 <not><equals arg1="${ant.java.version}" arg2="17"/></not>
9 <property environment="env"/>
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"/>
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."/>
28 <target name="init" description="initialize paths">
29 <echo message="Base directory: "${base}""/>
30 <mkdir dir="${build}"/>
32 <mkdir dir="${dist}"/>
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 "${env.JDK8_BOOT_PATH}" not found!">
40 <not><available file="${bootclass.path}"/></not>
43 <echo message="JDK8_BOOT_PATH: "${bootclass.path}""/>
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"/>
50 <target name="compile-test" depends="compile" description="compile the test sources">
51 <fail message="Library "junit-jupiter-api" 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>
56 <javac srcdir="${test}" destdir="${build}" includes="**/test/**/*.java" includeantruntime="false" debug="on" verbose="true">
58 <pathelement path="${build}"/>
59 <fileset refid="junit-jupiter-api"/>
60 <fileset dir="${lib}" includes="apiguardian-api-1*.jar"/>
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>
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}"/>
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"/>
80 <exec executable="git" dir="${base}" outputproperty="git.revision.branch" failonerror="yes">
81 <arg value="rev-parse"/><arg value="--abbrev-ref"/><arg value="HEAD"/>
83 <echo message="Git Revision: ${git.revision.branch}-${git.revision.commit}"/>
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"/>
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 &lt;mulder2@gmx.de&gt; | License: CC0 1.0 Universal</bottom>
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: "${manifest.file}""/>
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 <mulder2@gmx.de>"/>
115 <attribute name="Implementation-Version" value="${version.full}"/>
116 <attribute name="Specification-Title" value="SQLiteMap"/>
117 <attribute name="Specification-Vendor" value="LoRd_MuldeR <mulder2@gmx.de>"/>
118 <attribute name="Specification-Version" value="${version.full}"/>
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/**"/>
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="**/*"/>
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/**"/>
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"/>
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}"/>
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"/>