<?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.
-->

<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.sis</groupId>
    <artifactId>storage</artifactId>
    <version>1.1-SNAPSHOT</version>
  </parent>


   <!-- ===========================================================
           Module Description
       =========================================================== -->
  <groupId>org.apache.sis.storage</groupId>
  <artifactId>sis-xmlstore</artifactId>
  <name>Apache SIS XML storage</name>
  <description>
    Read and write files in the GPX format.
  </description>


  <!-- ===========================================================
           Developers and Contributors
       =========================================================== -->
  <developers>
    <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>developer</role>
      </roles>
    </developer>
  </developers>


  <!-- ===========================================================
           Build configuration
       =========================================================== -->
  <build>
    <plugins>

      <!-- Compile properties files into resources UTF files. -->
      <plugin>
        <groupId>org.apache.sis.core</groupId>
        <artifactId>sis-build-helper</artifactId>
        <version>${sis.plugin.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>compile-resources</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Anticipation for Java 9 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifestEntries>
              <Automatic-Module-Name>
                org.apache.sis.storage.xml
              </Automatic-Module-Name>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>


  <!-- ===========================================================
           Dependencies
       =========================================================== -->
  <dependencies>
    <dependency>
      <groupId>org.apache.sis.core</groupId>
      <artifactId>sis-feature</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.sis.storage</groupId>
      <artifactId>sis-storage</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>com.esri.geometry</groupId>
      <artifactId>esri-geometry-api</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- Test dependencies -->
    <dependency>
      <groupId>org.apache.sis.core</groupId>
      <artifactId>sis-metadata</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jaxb</groupId>
      <artifactId>jaxb-runtime</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>
