<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2014 Open Networking Laboratory
  ~
  ~ Licensed 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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.onosproject</groupId>
    <artifactId>onos-base</artifactId>
    <version>1</version>
    <relativePath/>
  </parent>

  <groupId>org.onosproject</groupId>
  <artifactId>atomix</artifactId>
  <packaging>bundle</packaging>
  <version>1.0.onos-SNAPSHOT</version>

  <description>Atomix shaded OSGi JAR</description>
  <url>http://onosproject.org/</url>

  <scm>
    <connection>scm:git:https://gerrit.onosproject.org/onos</connection>
    <developerConnection>scm:git:https://gerrit.onosproject.org/onos
    </developerConnection>
    <url>http://gerrit.onosproject.org/</url>
  </scm>

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <properties>
    <!-- TODO: replace with final release version when it is out -->
    <catalyst.version>1.0.6</catalyst.version>
    <atomix.version>1.0.0-rc3</atomix.version>
    <copycat.version>1.0.0-rc6</copycat.version>
  </properties>

  <dependencies>
    <dependency>
        <groupId>io.atomix.catalyst</groupId>
        <artifactId>catalyst-transport</artifactId>
        <version>${catalyst.version}</version>
    </dependency>

    <dependency>
        <groupId>io.atomix.catalyst</groupId>
        <artifactId>catalyst-serializer</artifactId>
        <version>${catalyst.version}</version>
    </dependency>

    <dependency>
        <groupId>io.atomix</groupId>
        <artifactId>atomix</artifactId>
        <version>${atomix.version}</version>
    </dependency>

    <dependency>
        <groupId>io.atomix.copycat</groupId>
        <artifactId>copycat-client</artifactId>
        <version>${copycat.version}</version>
    </dependency>

    <dependency>
        <groupId>io.atomix.copycat</groupId>
        <artifactId>copycat-server</artifactId>
        <version>${copycat.version}</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <!-- TODO: update once following issue is fixed. -->
        <!-- https://jira.codehaus.org/browse/MCOMPILER-205 -->
        <version>2.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.2</version>
        <configuration>
          <createSourcesJar>true</createSourcesJar>
          <artifactSet>
            <excludes>
              <!-- exclude OSGi-ready transitive dependencies -->
              <exclude>com.google.guava:guava</exclude>
              <exclude>com.esotericsoftware:*</exclude>
              <exclude>org.ow2.asm:asm</exclude>
              <exclude>org.objenesis:objenesis</exclude>
              <exclude>io.netty:*</exclude>
              <exclude>commons-io:commons-io</exclude>
            </excludes>
          </artifactSet>
          <filters>
            <filter>
              <artifact>io.atomix:atomix-all</artifact>
                <includes>
                  <include>**</include>
                </includes>
            </filter>
          </filters>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>3.0.1</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Export-Package>
              io.atomix.*
            </Export-Package>
            <Import-Package>
              !sun.nio.ch,!sun.misc,*
            </Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
