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 groupled modules into library, plugin, extension, docs or unsupported.

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