Build Configuration Reference
Central Ant build script for compiling, testing, packaging, and deploying the GeoServer application. Includes OGC-compliant module resolution, Docker OCI image generation, and Kubernetes deployment targets.
Latest Commit
a8f3c21
Build Status
✓ Passing
Test Coverage
87.4%
Last Deploy
2h 14m ago
build.xml — Ant Build Configuration
<?xml version="1.0" encoding="UTF-8"?>
<project name="geoserver" default="deploy" basedir=".">
<!-- Project Properties -->
<property file="env.properties"/>
<property name="src.dir" value="src/main/java"/>
<property name="web.dir" value="src/main/webapp"/>
<property name="build.dir" value="target"/>
<property name="dist.dir" value="${build.dir}/dist"/>
<property name="test.dir" value="src/test/java"/>
<property name="java.target" value="17"/>
<!-- Classpath Configuration -->
<path id="compile.classpath">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
<fileset dir="lib/optional">
<include name="*.jar"/>
</fileset>
</path>
<!-- Clean -->
<target name="clean" description="Remove generated artifacts">
<delete dir="${build.dir}" includeemptydirs="true"/>
</target>
<!-- Compile -->
<target name="compile" depends="clean" description="Compile Java sources">
<mkdir dir="${build.dir}/classes"/>
<javac srcdir="${src.dir}" destdir="${build.dir}/classes"
classpathref="compile.classpath" debug="true"
source="${java.target}" target="${java.target}">
<compilerarg value="-Xlint:all"/>
</javac>
</target>
<!-- Test -->
<target name="test" depends="compile" description="Run unit & integration tests">
<junit printsummary="yes" haltonfailure="no" fork="true">
<classpath>
<path refid="compile.classpath"/>
<pathelement location="${build.dir}/classes"/>
</classpath>
<batchtest todir="${build.dir}/test-reports">
<fileset dir="${test.dir}">
<include name="**/*Test.java"/>
</fileset>
</batchtest>
</junit>
</target>
<!-- Package WAR -->
<target name="package" depends="test" description="Create distribution archive">
<mkdir dir="${dist.dir}"/>
<war destfile="${dist.dir}/geoserver.war" webxml="${web.dir}/WEB-INF/web.xml">
<fileset dir="${web.dir}"/>
<classes dir="${build.dir}/classes"/>
<lib dir="lib"/>
</war>
<checksum file="${dist.dir}/geoserver.war" algorithm="SHA-256" fileext=".sha256"/>
</target>
<!-- Docker OCI Build -->
<target name="docker-build" depends="package" description="Build container image">
<exec executable="docker" failonerror="true">
<arg value="build"/>
<arg value="-t"/>
<arg value="geoserver:${version}"/>
<arg value="-f"/>
<arg value="Dockerfile"/>
<arg value="."/>
</exec>
</target>
<!-- Deploy to K8s -->
<target name="deploy" depends="docker-build" description="Deploy to cluster">
<echo message="Deploying geoserver:${version} to ${deploy.env}..."/>
<exec executable="kubectl" failonerror="true">
<arg value="set"/>
<arg value="image"/>
<arg value="deployment/geoserver"/>
<arg value="geoserver=geoserver:${version}"/>
</exec>
<echo message="Deployment complete. Health: ${deploy.url}/status"/>
</target>
</project>
env.properties — Environment Variables
# GeoServer Build & Runtime Environment
version=2.25.3-SNAPSHOT
deploy.env=staging
deploy.url=https://gs-staging.geoserver.io
jdbc.url=jdbc:postgresql://db.internal:5432/geospatial
jdbc.user=${POSTGRES_USER}
jdbc.pass=${POSTGRES_PASSWORD}
cache.enabled=true
cache.provider=redis
cache.ttl=3600
wms.maxbuffer=2048
wfs.features.limit=1000
logging.level=INFO
cors.enabled=true
cors.origins=*.geoserver.io, localhost:3000
Dockerfile — OCI Image Definition
FROM eclipse-temurin:17-jre-alpine
LABEL org.opencontainers.image.source=https://github.com/geoserver/geoserver
LABEL org.opencontainers.image.vendor=GeoServer Project
ENV GEOSERVER_DATA_DIR=/opt/geoserver/data_dir
ENV MAX_MEMORY=1024m
ENV JAVA_OPTS="-Xmx${MAX_MEMORY} -Djava.awt.headless=true"
WORKDIR /opt/geoserver
COPY target/dist/geoserver.war webapps/
COPY data_dir/ /opt/geoserver/data_dir/
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \\
CMD wget -q --spider http://localhost:8080/geoserver/status || exit 1
ENTRYPOINT ["/opt/geoserver/tomcat/bin/catalina.sh", "run"]
📦 Configuration Reference
| Property | Type | Description |
|---|---|---|
version |
String | Build version tag (semver) |
deploy.env |
Enum | Target environment: dev, staging, prod |
wms.maxbuffer |
Integer | Max tile buffer size for WMS requests |
wfs.features.limit |
Integer | Default max features per WFS query |
cache.provider |
String | TMS/seed cache backend: redis, geopackage, filesystem |
cors.enabled |
Boolean | Enable Cross-Origin Resource Sharing |
🔄 Build Pipeline
clean & compile
unit tests
package WAR
docker build
k8s deploy