<?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>0.8</version>
  </parent>


  <!-- ===========================================================
           Module Description
       =========================================================== -->
  <groupId>org.apache.sis.storage</groupId>
  <artifactId>sis-storage</artifactId>
  <packaging>bundle</packaging>
  <name>Apache SIS common storage</name>
  <description>
  <!-- Left alignment because this description will be copied in META-INF/MANIFEST.MF
       The leading space after the first line is necessary for proper formatting. -->
Provides the interfaces and base classes to be implemented by various storage formats.
  </description>


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


  <!-- ===========================================================
           Build configuration
       =========================================================== -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>org.apache.sis.storage</Bundle-SymbolicName>
            <Export-Package>org.apache.sis.internal.storage; x-friends=org.apache.sis.storage.netcdf, *</Export-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>


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

</project>
