Module Directory Structure

GeoTools 2.4 and above complies to the Maven standard layout regarding nested modules; and the layout of source code directories.

This section provides a summary of module structure and a examples how we have grouped modules into library, plugin, extension, docs or unsupported.

Note

As of GeoTools 34.0, the project uses the Maven Bill of Materials (BOM) pattern to manage dependencies. See Maven Bill of Materials (BOM) for details on how dependencies are managed within modules.

Module Structure

Module is structured:

  • modules/category/module/pom.xml

    Provides metadata about the module for maven

  • modules/category/module/src/site

    Files for Maven to automatically generate the site

  • modules/category/module/src/site/site.xml

    Layout file for the site, required to add a menu entry for the review information

  • modules/category/module/src/site/apt/review.apt

    Almost Plain Text file for copyright and licensing info

  • modules/category/module/src/main/java

    Module Java source files, andy an “doc-files” used for javadoc attachments such as images.

  • modules/category/module/src/main/resources

    Resources to be included in the JAR file

  • modules/category/module/src/test/java

    JUnit tests source files

  • modules/category/module/src/test/resources

    Resources required for tests only, often these are placed in a “test-data” folder to prevent confusion with normal java packages.

  • modules/category/module/target

    Automatically created for Maven output (details below)

Module Targets:

  • modules/category/module/target/classes

    Generated class files, results of last ‘maven compile’

  • modules/category/module/target/site

    Files for the automatic website, from ‘maven site:site’

  • modules/category/module/target/site/apidocs

    Generated javadocs, from last ‘maven javadoc:javadoc’

  • modules/category/module/target/surefire-reports

    Logs from junit, from last ‘maven test’

  • modules/category/module/target/test-classes

    Generated junit classfiles, from last ‘maven test’

  • modules/category/module/target/module-2.4-SNAPSHOT.jar

    Generated jar file, from last ‘maven install’

Module Categories

The modules are are organised according to their role (some examples are shown below):

  • modules/library/ - this is the core library

    • opengis - interfaces for standard GIS concepts

    • api - stable interfaces

    • referencing - default implementations of opengis interfaces

    • coverage - enables raster support

    • main default implementations

    • jdbc - enables database support

    • render - implementation of SLD based rendering system

    • cql - implementation of plain text filter

    • xml - support for xml

  • ogc/ - used to store OGC schemas and associated xml (and target data structures if needed)

  • modules/plugin/ - modules that dynamically integrate to the GeoTools library at runtime

    • jdbc-postgis - plugin allowing jdbc to work with postgis database

    • epsg-hsql - plugin allowing referencing to work with epsg codes

    • shapefile - plugin providing shapefile support

  • modules/extension/ - extensions and extras built using the library

    • app-schmea - support the mapping of content to an applicaiton schema

    • brewer - generate styles from for a feature collection

    • xsd - bindings for xml parsing / encoding

  • modules/unsupported/ - modules that are not ready yet, or are orphaned and no longer have a contact person

    • process - framework for spatial processes

    • swing

    • swt

    • wps - client for web processing service

  • doc/ - example code used as part of documentation and tutoirals