<?xml version="1.0" encoding="UTF-8"?>

<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

<!-- =============================================================================================
     Maven project configuration file
     http://maven.apache.org/

     Apache SIS build requires Java 11 or higher, but compiled files can be executed on Java 8.
     Setting the SIS_DATA environment variable before build is optional but recommended.

     Build development snapshot:    mvn clean install
     Include EPSG database:         mvn install -Pnon-free
     Run more extensive tests:      mvn test -Dorg.apache.sis.test.extensive=true
     ============================================================================================= -->
<project xmlns              = "http://maven.apache.org/POM/4.0.0"
         xmlns:xsi          = "http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
                               http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>21</version>
  </parent>



  <!-- ==============================================================
         Project description. The <organization> and <licenses>
         elements are inherited from the parent Apache pom.xml.
       ============================================================== -->
  <groupId>org.apache.sis</groupId>
  <artifactId>parent</artifactId>
  <version>2.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache SIS</name>
  <url>http://sis.apache.org</url>
  <description>
    Apache Spatial Information System (SIS) is a free software, Java language library for developing geospatial applications.
    SIS provides data structures for geographic features and associated metadata along with methods to manipulate those data structures.
    The library is an implementation of GeoAPI 3.0.1 interfaces and can be used for desktop or server applications.
    The SIS metadata module forms the base of the library and enables the creation of metadata objects which comply with the ISO 19115 international standard.
    The SIS referencing module enable the construction of geodetic data structures for geospatial referencing as defined by ISO 19111 standard,
    along with the associated operations which enable the transformation of coordinates between different reference systems.
    The SIS storage modules provide a common approach to the reading and writing of metadata, features and coverages
    applicable to simple imagery as to many dimensional data structures.
  </description>
  <inceptionYear>2010</inceptionYear>



  <!-- ==============================================================
         Source code repository, issue managements and mailing lists.
       ============================================================== -->
  <scm>
    <connection>
      scm:git:https://gitbox.apache.org/repos/asf/sis.git
    </connection>
    <developerConnection>
      scm:git:https://gitbox.apache.org/repos/asf/sis.git
    </developerConnection>
    <url>https://gitbox.apache.org/repos/asf?p=sis.git</url>
  </scm>

  <ciManagement>
    <system>jenkins</system>
    <url>https://builds.apache.org/job/sis</url>
  </ciManagement>

  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/SIS</url>
  </issueManagement>

  <mailingLists>
    <mailingList>
      <name>User mailing list</name>
      <subscribe>user-subscribe@sis.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@sis.apache.org</unsubscribe>
      <post>user@sis.apache.org</post>
      <archive>https://lists.apache.org/list.html?user@sis.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Development mailing list</name>
      <subscribe>dev-subscribe@sis.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@sis.apache.org</unsubscribe>
      <post>dev@sis.apache.org</post>
      <archive>https://lists.apache.org/list.html?dev@sis.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Commit mailing list</name>
      <subscribe>commits-subscribe@sis.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@sis.apache.org</unsubscribe>
      <post>commits@sis.apache.org</post>
      <archive>https://lists.apache.org/list.html?commits@sis.apache.org</archive>
    </mailingList>
  </mailingLists>



  <!-- ==============================================================
         Developers and Contributors.
       ============================================================== -->
  <developers>
    <developer>
      <name>Adam Estrada</name>
      <id>aestrada</id>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Andrew Hart</name>
      <id>ahart</id>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Charitha Madusanka</name>
      <id>charithcc</id>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Chris A. Mattmann</name>
      <id>mattmann</id>
      <email>mattmann@apache.org</email>
      <url>http://sunset.usc.edu/~mattmann/</url>
      <organization>NASA Jet Propulsion Laboratory</organization>
      <organizationUrl>http://www.jpl.nasa.gov</organizationUrl>
      <timezone>-8</timezone>
      <roles>
        <role>PMC emeritus</role>
      </roles>
    </developer>
    <developer>
      <name>Gregory D. Reddin</name>
      <id>greddin</id>
      <roles>
        <role>PMC member</role>
        <role>mentor</role>
      </roles>
    </developer>
    <developer>
      <name>Ian Holsman</name>
      <id>ianh</id>
      <roles>
        <role>PMC emeritus</role>
        <role>mentor</role>
      </roles>
    </developer>
    <developer>
      <name>Joe Schaefer</name>
      <id>joes</id>
      <roles>
        <role>PMC emeritus</role>
      </roles>
    </developer>
    <developer>
      <name>Johann Sorel</name>
      <id>jsorel</id>
      <email>johann.sorel@geomatys.com</email>
      <organization>Geomatys</organization>
      <organizationUrl>http://www.geomatys.com</organizationUrl>
      <timezone>+1</timezone>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Joseph F. White</name>
      <id>jwhite</id>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Marc Le Bihan</name>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Martin Desruisseaux</name>
      <id>desruisseaux</id>
      <email>desruisseaux@apache.org</email>
      <organization>Geomatys</organization>
      <organizationUrl>http://www.geomatys.com</organizationUrl>
      <timezone>+1</timezone>
      <roles>
        <role>PMC member</role>
        <role>chair</role>
      </roles>
    </developer>
    <developer>
      <name>Nga Thien Chung</name>
      <id>nchung</id>
      <email>nchung@apache.org</email>
      <organization>NASA Jet Propulsion Laboratory</organization>
      <organizationUrl>http://www.jpl.nasa.gov</organizationUrl>
      <timezone>-8</timezone>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Olivier Nouguier</name>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Patrick O'Leary</name>
      <id>pjaol</id>
      <email>pjaol@apache.org</email>
      <organization>AT&amp;T Interactive</organization>
      <organizationUrl>http://www.attinteractive.com</organizationUrl>
      <timezone>-8</timezone>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Paul Michael Ramirez</name>
      <id>pramirez</id>
      <email>pramirez@apache.org</email>
      <url>http://people.apache.org/~pramirez/</url>
      <organization>NASA Jet Propulsion Laboratory</organization>
      <organizationUrl>http://www.jpl.nasa.gov</organizationUrl>
      <timezone>-8</timezone>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Peter Karich</name>
      <id>pk</id>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Rémi Maréchal</name>
      <id>rmarechal</id>
      <email>remi.marechal@geomatys.com</email>
      <organization>Geomatys</organization>
      <organizationUrl>http://www.geomatys.com</organizationUrl>
      <timezone>+1</timezone>
      <roles>
        <role>committer</role>
      </roles>
    </developer>
    <developer>
      <name>Ross Laidlaw</name>
      <id>rlaidlaw</id>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Sean William McCleese</name>
      <id>smcclees</id>
      <email>smcclees@apache.org</email>
      <organization>NASA Jet Propulsion Laboratory</organization>
      <organizationUrl>http://www.jpl.nasa.gov</organizationUrl>
      <timezone>-8</timezone>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Suresh Marru</name>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
    <developer>
      <name>Travis L. Pinney</name>
      <id>tlpinney</id>
      <email>travis.pinney@gmail.com</email>
      <roles>
        <role>PMC member</role>
      </roles>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Adrian Custer</name>
      <roles>
        <role>documentation</role>
      </roles>
    </contributor>
    <contributor>
      <name>Alexis manin</name>
      <email>alexis.manin@geomatys.com</email>
      <organization>Geomatys</organization>
      <organizationUrl>http://www.geomatys.com</organizationUrl>
      <timezone>+1</timezone>
      <roles>
        <role>developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Antoine Hnawia</name>
      <organization>Institut de Recherche pour le Développement</organization>
      <organizationUrl>http://www.ird.fr</organizationUrl>
      <timezone>+11</timezone>
      <roles>
        <role>developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Cédric Briançon</name>
      <email>cedric.briancon@geomatys.com</email>
      <organization>Geomatys</organization>
      <organizationUrl>http://www.geomatys.com</organizationUrl>
      <timezone>+1</timezone>
      <roles>
        <role>developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Christina Hough</name>
      <roles>
        <role>translator</role>
      </roles>
    </contributor>
    <contributor>
      <name>Cullen Rombach</name>
      <organization>Image Matters</organization>
      <organizationUrl>http://www.imagemattersllc.com</organizationUrl>
      <timezone>-5</timezone>
      <roles>
        <role>developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Guilhem Legal</name>
      <email>guilhem.legal@geomatys.com</email>
      <organization>Geomatys</organization>
      <organizationUrl>http://www.geomatys.com</organizationUrl>
      <timezone>+1</timezone>
      <roles>
        <role>developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Kevan Miller</name>
      <roles>
        <role>mentor</role>
      </roles>
    </contributor>
    <contributor>
      <name>Minh Chinh Vu</name>
      <email>chinhvm.uet.1995@gmail.com</email>
      <organization>VNSC</organization>
      <organizationUrl>http://vnsc.org.vn</organizationUrl>
      <timezone>+7</timezone>
      <roles>
        <role>developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Thi Phuong Hao Nguyen</name>
      <email>nguyenthiphuonghao243@gmail.com</email>
      <organization>VNSC</organization>
      <organizationUrl>http://vnsc.org.vn</organizationUrl>
      <timezone>+7</timezone>
      <roles>
        <role>developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Touraïvane</name>
      <organization>Institut de Recherche pour le Développement (IRD)</organization>
      <organizationUrl>http://www.ird.fr</organizationUrl>
      <timezone>+11</timezone>
      <roles>
        <role>developer</role>
      </roles>
    </contributor>
  </contributors>



  <!-- ==============================================================
         Dependency management. If a POM in a child module declares
         one of those dependencies, then it will use the version
         specified here. Otherwise, those dependencies are ignored.

         See http://search.maven.org/ for latest version numbers.
       ============================================================== -->
  <dependencyManagement>
    <dependencies>
      <!-- Import all dependency management used by the GeAPI project.
           This include JUnit and units of measurement. -->
      <dependency>
        <groupId>org.opengis</groupId>
        <artifactId>geoapi-parent</artifactId>
        <version>${geoapi.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.opengis</groupId>
        <artifactId>geoapi-pending</artifactId>
        <version>${geoapi.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opengis</groupId>
        <artifactId>geoapi-conformance</artifactId>
        <version>${geoapi.version}</version>
        <scope>test</scope>
      </dependency>

      <!-- Libraries (language, XML, network) -->
      <dependency>
        <groupId>com.esri.geometry</groupId>
        <artifactId>esri-geometry-api</artifactId>
        <version>2.2.3</version>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.locationtech.jts</groupId>
        <artifactId>jts-core</artifactId>
        <version>1.16.1</version>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>gov.nist.math</groupId>
        <artifactId>jama</artifactId>
        <version>1.0.3</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>net.sf.geographiclib</groupId>
        <artifactId>GeographicLib-Java</artifactId>
        <version>1.50</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>8.0.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>${jaxb.version}</version>
        <scope>provided</scope>             <!-- Because available in JDK8. -->
      </dependency>
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>${jaxb.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>1.19</version>
      </dependency>

      <!-- Databases -->
      <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derby</artifactId>
        <version>10.14.2.0</version>        <!-- 10.14 is the last series compatible with JDK 8. -->
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.5.0</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.2.8</version>
        <scope>test</scope>
      </dependency>

      <!-- Optional dependencies -->
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.core</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>edu.ucar</groupId>
        <artifactId>cdm</artifactId>
        <version>${netcdf.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.7.22</version>               <!-- Must matches the version used by netCDF. -->
        <scope>test</scope>                     <!-- Should never be needed at compile time.  -->
      </dependency>
    </dependencies>
  </dependencyManagement>



  <!-- ===========================================================
           Dependencies to be inherited by all modules.
       =========================================================== -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>   <!-- To be removed after https://issues.apache.org/jira/browse/SIS-469 is done. -->
      <groupId>jakarta.xml.bind</groupId>
      <artifactId>jakarta.xml.bind-api</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>



  <!-- ===================================================================
         Properties used in dependency management and build configuration.
         The last properties in this list depend on the Apache SIS branch.
       =================================================================== -->
  <properties>
    <netcdf.version>4.6.14</netcdf.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <website.encoding>UTF-8</website.encoding>
    <website.locale>en</website.locale>

    <!-- Following properties are branch-specific -->
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <sis.plugin.version>${project.version}</sis.plugin.version>
    <sis.non-free.version>1.0</sis.non-free.version>                 <!-- Used only if "non-free" profile is enabled. -->
    <geoapi.version>4.0-SNAPSHOT</geoapi.version>
    <jaxb.version>2.3.2</jaxb.version>
  </properties>

  <profiles>
    <profile>
      <id>apache-release</id>
      <properties>
        <maven.compiler.debug>false</maven.compiler.debug>              <!-- For smaller JAR files size. -->
        <maven.compiler.optimize>true</maven.compiler.optimize>
        <org.apache.sis.test.extensive>true</org.apache.sis.test.extensive>
      </properties>
    </profile>

    <!-- ===================================================================
           If the user has not set the SIS_DATA environment variable, set a
           default value where we can create a minimalist database.
         =================================================================== -->
    <profile>
      <id>sis-data</id>
      <activation>
        <property>
          <name>!env.SIS_DATA</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <trimStackTrace>false</trimStackTrace>
              <environmentVariables>
                <SIS_DATA>${session.executionRootDirectory}/target</SIS_DATA>
              </environmentVariables>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>



  <!-- ==============================================================
         Build configuration.
         See http://maven.apache.org/plugins/ for a plugins list.
       ============================================================== -->
  <build>
    <plugins>
      <!-- JDK requirement for building (not necessarily for running) -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M2</version>
        <executions>
          <execution>
            <id>enforce</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>13</version>
                </requireJavaVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Cleanup local repository by removing Apache SIS snapshots -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>remove-old-artifacts</id>
            <goals>
              <goal>remove-project-artifact</goal>
            </goals>
            <configuration>
              <removeAll>false</removeAll>      <!-- Remove only snapshots of this project version. -->
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Compile -->
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>${maven.compiler.target}</release>
          <encoding>${project.build.sourceEncoding}</encoding>
          <useIncrementalCompilation>false</useIncrementalCompilation> <!-- https://issues.apache.org/jira/browse/MCOMPILER-209 -->
          <compilerArgs>
            <arg>-Xlint:all</arg>
            <arg>-Xdoclint:syntax,html,missing/protected,accessibility/protected</arg>
            <arg>-h</arg> <arg>${project.build.sourceDirectory}/../c</arg>
          </compilerArgs>
        </configuration>
      </plugin>

      <!-- Execute test suites instead of individual test cases. -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.2</version>
        <configuration>
          <includes>
            <include>**/*TestSuite.java</include>
          </includes>
          <systemPropertyVariables>
            <derby.stream.error.file>${project.build.directory}/derby.log</derby.stream.error.file>
          </systemPropertyVariables>
        </configuration>
      </plugin>

      <!-- JAR packaging
           Note: <index> and <addClasspath> are mutually exclusive: when both are enabled,
           the META-INF/INDEX.LIST file has precedence over the "Class-Path" entry in the
           META-INF/MANIFEST.MF file,  thus causing java.lang.NoClassDefFoundError if the
           INDEX.LIST file is incomplete (which seem to happen in practice). -->
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.2</version>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
            <index>false</index>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathLayoutType>simple</classpathLayoutType>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
              <Built-On>${maven.build.timestamp}</Built-On>
              <Specification-Title>GeoAPI</Specification-Title>
              <Specification-Version>${geoapi.version}</Specification-Version>
              <Specification-Vendor>Open Geospatial Consortium</Specification-Vendor>
              <Implementation-URL>http://sis.apache.org/</Implementation-URL>
            </manifestEntries>
          </archive>
          <skipIfEmpty>true</skipIfEmpty>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Set "*-source-release.zip" filename prefix to "sis-*" instead of "parent-*" -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
          <execution>
            <id>source-release-assembly</id>
            <configuration>
              <finalName>sis-${project.version}</finalName>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Checkstype configuration
           Legal note: Checkstyle is under LGPL license, but it is okay to use it only for
           the build if it is downloaded by Maven (not included in Apache SIS distribution).
           See http://www.apache.org/legal/resolved.html#prohibited
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.1.0</version>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>8.23</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <skip>${skipTests}</skip> <!-- When skipping tests, skip also checkstyle verification. -->
              <encoding>${project.build.sourceEncoding}</encoding>
              <consoleOutput>true</consoleOutput>
              <checkstyleRules>
                <module name="Checker">
                  <!--
                    Whether whitespaces should be present before or after various kind of tokens,
                    and where line wraps are allowed or mandated.
                  -->
                  <module name="FileTabCharacter"/>                 <!-- No tab characters in the file. -->
                  <module name="NewlineAtEndOfFile"/>               <!-- Newline at the end of each file. -->
                  <module name="TreeWalker">
                    <module name="RegexpSinglelineJava">
                      <property name="format" value="\s+$"/>
                      <property name="message" value="Trailing spaces not allowed."/>
                    </module>
                    <module name="NoLineWrap"/>                     <!-- Imports and package statements are not line-wrapped. -->
                    <module name="RedundantImport"/>                <!-- No redundant import statements. -->
                    <module name="GenericWhitespace"/>              <!-- Whitespace around the Generic tokens follow typical convention. -->
                    <module name="TypecastParenPad"/>               <!-- No space inside parentheses for typecasts. -->
                    <module name="SeparatorWrap">                   <!-- No line wrapping before comma. -->
                      <property name="tokens" value="COMMA"/>
                    </module>
                    <module name="WhitespaceAfter">                 <!-- Checks that a token is followed by whitespace. -->
                      <property name="tokens" value="TYPECAST, LITERAL_IF, LITERAL_ELSE, LITERAL_WHILE, LITERAL_DO, LITERAL_FOR, DO_WHILE"/>
                    </module>
                    <module name="NoWhitespaceAfter">               <!-- No whitespace after "++" in ++x, etc. -->
                      <property name="tokens" value="INC, DEC, BNOT, LNOT"/>
                    </module>
                    <module name="NoWhitespaceBefore">              <!-- No whitespace before "++" in x++, etc. -->
                      <property name="tokens" value="COMMA, POST_INC, POST_DEC, ELLIPSIS"/>
                    </module>
                    <module name="WhitespaceAround">
                      <property name="tokens" value="
                        MINUS_ASSIGN, STAR_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, MOD,
                        SL, SL_ASSIGN, SR, SR_ASSIGN, BSR, BSR_ASSIGN,
                        BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BXOR, BXOR_ASSIGN,
                        TYPE_EXTENSION_AND, LAND, LOR, QUESTION, LAMBDA,
                        COLON, DO_WHILE, LITERAL_DO, LITERAL_WHILE, LITERAL_FOR,
                        LITERAL_ELSE, LITERAL_SWITCH,
                        LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY,
                        LITERAL_SYNCHRONIZED"/>
                      <property name="allowEmptyConstructors" value="true"/>
                      <property name="allowEmptyMethods"      value="true"/>
                      <property name="allowEmptyTypes"        value="true"/>
                      <property name="allowEmptyLoops"        value="true"/>
                      <property name="allowEmptyLambdas"      value="true"/>
                      <property name="allowEmptyCatches"      value="true"/>
                    </module>
                    <!--
                      Code formatting on other aspects than whitespaces. When there is different ways to express
                      the same thing (e.g. Java-style versus C-style of array declarations), the following rules
                      enforce one specific convention.
                    -->
                    <module name="UpperEll"/>                       <!-- Upper-case 'L' suffix for longs, not 'l'. -->
                    <module name="ArrayTypeStyle"/>                 <!-- Java-style arrays, not C-style. -->
                    <module name="ModifierOrder"/>                  <!-- Order of public, static, etc. keywords. -->
                    <module name="AvoidEscapedUnicodeCharacters">
                      <property name="allowEscapesForControlCharacters" value="true"/>
                      <property name="allowNonPrintableEscapes"         value="true"/>
                      <property name="allowIfAllCharactersEscaped"      value="true"/>
                      <property name="allowByTailComment"               value="true"/>
                    </module>
                    <!--
                      Programming language constructs: number of elements, modifiers, etc.
                    -->
                    <module name="OuterTypeNumber"/>                <!-- Only one outer type per file. -->
                    <module name="OuterTypeFilename"/>              <!-- Outer type name and file name shall match. -->
                    <module name="InterfaceIsType"/>                <!-- Do not allow interface without methods. -->
                    <module name="FinalClass"/>                     <!-- Class having only private constructors should be final. -->
                    <module name="PackageDeclaration"/>             <!-- All classes shall be in a package. -->
                    <module name="HideUtilityClassConstructor"/>    <!-- No public constructor in utility classes. -->
                    <module name="MissingOverride"/>                <!-- @Override annotation everywhere applicable. -->
                    <module name="PackageAnnotation"/>              <!-- Package annotations shall be used only in package-info files. -->
                    <module name="EmptyCatchBlock"/>                <!-- No empty catch unless there is a comment inside. -->
                    <module name="CovariantEquals"/>                <!-- No equals(Foo), unless equals(Object) also exists. -->
                    <module name="ExplicitInitialization"/>         <!-- No unnecessary initialization to 0 or null. -->
                    <module name="SimplifyBooleanReturn"/>          <!-- No if (boolean) return true; else return false. -->
                    <module name="RedundantModifier">               <!-- No modifiers that were implicit. -->
                      <property name="tokens" value="VARIABLE_DEF, ANNOTATION_FIELD_DEF, INTERFACE_DEF, CLASS_DEF, ENUM_DEF, RESOURCE"/>
                    </module>
                  </module>
                  <module name="UniqueProperties"/>                 <!-- No duplicated keys in *.properties files. -->
                </module>
              </checkstyleRules>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- JavaDoc configuration. -->
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <source>${maven.compiler.source}</source>             <!-- Enables javadoc to handle language constructs present in target JDK. -->
          <encoding>${project.build.sourceEncoding}</encoding>  <!-- Encoding of Java source file. -->
          <docencoding>${website.encoding}</docencoding>        <!-- Encoding of the generated HTML files. -->
          <charset>${website.encoding}</charset>                <!-- Encoding to declare in the HTML META tag. -->
          <locale>${website.locale}</locale>                    <!-- Locale for navigation bar, help file contents, etc. -->
          <author>false</author>                                <!-- Excludes the authors text in the generated docs. -->
          <version>false</version>                              <!-- Excludes the version text in the generated docs. -->
          <noqualifier>all</noqualifier>                        <!-- Omit qualifying package name before class names in output. -->
          <quiet>true</quiet>                                   <!-- Shuts off non-error and non-warning messages. -->
          <keywords>true</keywords>                             <!-- Adds HTML meta keyword tags to the generated files. -->
          <breakiterator>true</breakiterator>                   <!-- Better boundary detection when determining the end of the first sentence. -->
          <validateLinks>true</validateLinks>                   <!-- Validates content of package-list resources. -->
          <detectJavaApiLink>false</detectJavaApiLink>          <!-- Let us declare link to Java API. -->
          <links>
            <link>https://docs.oracle.com/javase/8/docs/api</link>
            <link>http://unitsofmeasurement.github.io/unit-api/site/apidocs</link>
            <link>http://www.geoapi.org/snapshot/pending</link>
            <link>http://www.unidata.ucar.edu/software/thredds/current/netcdf-java/javadoc</link>
          </links>

          <additionalOptions>
            <additionalOption>--add-stylesheet "${maven.multiModuleProjectDirectory}/src/main/javadoc/sis.css"</additionalOption>
            <additionalOption>--no-module-directories</additionalOption> <!-- https://bugs.openjdk.java.net/browse/JDK-8215291 -->
          </additionalOptions>

          <!-- Separates packages on the overview page into the groups specified. -->
          <groups>
            <group>
              <title>Testing tools</title> <!-- Exists in test javadoc only. -->
              <packages>org.apache.sis.test*</packages>
            </group>
            <group>
              <title>Applications</title>
              <packages>org.apache.sis.console*:org.apache.sis.services*</packages>
            </group>
            <group>
              <title>Data storage</title>
              <packages>org.apache.sis.storage*:org.apache.sis.index*</packages>
            </group>
            <group>
              <title>Coverage and raster</title>
              <packages>org.apache.sis.coverage*:org.apache.sis.image*</packages>
            </group>
            <group>
              <title>Feature and Geometry</title>
              <packages>org.apache.sis.feature*:org.apache.sis.geometry*</packages>
            </group>
            <group>
              <title>Referencing</title>
              <packages>org.apache.sis.referencing*:org.apache.sis.parameter*:org.apache.sis.distance*</packages>
            </group>
            <group>
              <title>Metadata</title>
              <packages>org.apache.sis.metadata*:org.apache.sis.io.wkt</packages>
            </group>
            <group>
              <title>Utilities</title>
              <packages>org.apache.sis.math*:org.apache.sis.measure*:org.apache.sis.util*:org.apache.sis.io*:org.apache.sis.xml*:org.apache.sis.setup*</packages>
            </group>
            <group>
              <title>Profiles</title>
              <packages>org.apache.sis.profile*</packages>
            </group>
          </groups>

          <!-- Internal packages to hide from javadoc. -->
          <excludePackageNames>org.apache.sis.internal.*:org.apache.sis.util.resources:org.apache.sis.referencing.operation.provider</excludePackageNames>

          <!-- Custom taglets, some of them implemented in Java. -->
          <tags>
            <tag><placement>X</placement> <name>category</name> <head>Category:</head></tag>
            <tag><placement>a</placement> <name>todo</name>     <head>TODO:</head></tag>
          </tags>
          <taglets>
            <taglet><tagletClass>org.apache.sis.internal.doclet.Module</tagletClass></taglet>
            <taglet><tagletClass>org.apache.sis.internal.doclet.Include</tagletClass></taglet>
            <taglet><tagletClass>org.apache.sis.internal.doclet.Preformat</tagletClass></taglet>
          </taglets>
          <doclet>org.apache.sis.internal.doclet.Doclet</doclet>
          <tagletArtifact>
            <groupId>org.apache.sis.core</groupId>
            <artifactId>sis-build-helper</artifactId>
            <version>${sis.plugin.version}</version>
          </tagletArtifact>
          <docletArtifact>
            <groupId>org.apache.sis.core</groupId>
            <artifactId>sis-build-helper</artifactId>
            <version>${sis.plugin.version}</version>
          </docletArtifact>
        </configuration>
      </plugin>

      <!-- Create web site. The Maven generated site is not deployed at the URL
           declared in this pom.xml (namely http://sis.apache.org). Consequently,
           we disable links relativization for avoiding confusing behavior. -->
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
        <configuration>
          <locales>${website.locale}</locales>
          <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
          <outputEncoding>${website.encoding}</outputEncoding>
          <relativizeDecorationLinks>false</relativizeDecorationLinks>
        </configuration>
      </plugin>
    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-maven-plugin</artifactId>
          <version>9.4.20.v20190813</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>



  <!-- ==============================================================
         Additional repositories from which to download artifacts.
         The parent pom.xml already declares the apache.snapshots
         repository for library artifacts. But we also need it for
         Maven plugins in order to download sis-build-helper when
         the user did not built it himself.
       ============================================================== -->
  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </pluginRepository>
  </pluginRepositories>

  <!-- Used for GeoAPI snapshots only.
       Shall be removed on SIS master. -->
  <repositories>
    <repository>
      <id>geotoolkit</id>
      <name>Geotoolkit.org repository</name>
      <url>http://maven.geotoolkit.org</url>
    </repository>
  </repositories>



  <!-- ==============================================================
         Group of modules to build in approximate dependency order.
       ============================================================== -->
  <modules>
    <module>core</module>
    <module>storage</module>
    <module>application</module>
    <module>profiles</module>
  </modules>

</project>
