blob: e6b718304aa811a28b03d3db31a0273bb0accbef [file] [log] [blame]
<?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
Include JavaFX dependency (GPL): mvn install -Pjavafx
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>27</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://ci-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>
<organization>NASA Jet Propulsion Laboratory</organization>
<organizationUrl>https://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>https://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>https://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>https://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>
<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>https://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>https://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>https://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>https://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>https://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>https://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>https://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>https://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>https://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>https://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>https://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 https://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.4</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.19.0</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>2.0</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>2.3.3</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</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.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.214</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.4.1</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-core</artifactId>
<version>5.5.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.28</version> <!-- Must matches the version used by netCDF. -->
</dependency>
</dependencies>
</dependencyManagement>
<!-- ===========================================================
Dependencies to be inherited by all modules.
=========================================================== -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</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>
<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.2</sis.non-free.version> <!-- Used only if "non-free" profile is activated. -->
<javafx.version>18.0.1</javafx.version> <!-- Used only if "javafx" profile is activated. -->
<geoapi.version>4.0-SNAPSHOT</geoapi.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>
<build>
<plugins>
<plugin>
<!-- Configuration of Javadoc attached to Maven artifacts (not aggregated javadoc). -->
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<nonavbar>true</nonavbar> <!-- Navigation bar not used when Javadoc is browsed from IDE. -->
<doclint>-reference</doclint> <!-- Cross-modules references are valid only in aggregated javadoc. -->
</configuration>
</plugin>
</plugins>
</build>
</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>
<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.1.0</version>
<executions>
<execution>
<id>enforce</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>17</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
<execution>
<!-- Metadata (including timestamp) considered more valuable than bit-by-bit reproductive build. -->
<id>enforce-output-timestamp-property</id>
<configuration>
<skip>true</skip>
</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.3.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.10.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>
</compilerArgs>
</configuration>
</plugin>
<!-- Execute test suites instead of individual test cases. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
<includes>
<include>**/*TestSuite.java</include>
</includes>
<systemProperties>
<property>
<name>derby.stream.error.file</name>
<value>${project.build.directory}/derby.log</value>
</property>
</systemProperties>
</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.2.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.4.2</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.2</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<configuration>
<skip>${skipTests}</skip> <!-- When skipping tests, skip also checkstyle verification. -->
<excludes>**/generated/**/*</excludes> <!-- Skip generated source code, e.g. classes created by JMH. -->
<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.4.0</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/javadoc</link>
</links>
<additionalOptions>
<additionalOption>--add-stylesheet "${maven.multiModuleProjectDirectory}/src/main/javadoc/sis.css"</additionalOption>
</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</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>https://maven.geotoolkit.org</url>
</repository>
</repositories>
<!-- ==============================================================
Group of modules to build in approximate dependency order.
============================================================== -->
<modules>
<module>core</module>
<module>cloud</module>
<module>storage</module>
<module>application</module>
<module>profiles</module>
</modules>
</project>