<?xml version="1.0" encoding="UTF-8"?>
<!--
  #%L
  SAMOA
  %%
  Copyright (C) 2014 - 2015 Apache Software Foundation
  %%
  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.
  #L%
  -->

<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>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <name>samoa-s4</name>
  <description>S4 bindings for SAMOA</description>

  <artifactId>samoa-s4</artifactId>
  <parent>
    <groupId>org.apache.samoa</groupId>
    <artifactId>samoa</artifactId>
    <version>0.3.0-incubating-SNAPSHOT</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.apache.samoa</groupId>
      <artifactId>samoa-api</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>com.github.javacliparser</groupId>
      <artifactId>javacliparser</artifactId>
      <version>${javacliparser.version}</version>
    </dependency>

    <!-- S4 dependencies need to be installed separately as they are not available via Maven yet -->
    <dependency>
      <groupId>org.apache.s4</groupId>
      <artifactId>s4-base</artifactId>
      <version>${s4.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.s4</groupId>
      <artifactId>s4-comm</artifactId>
      <version>${s4.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.s4</groupId>
      <artifactId>s4-core</artifactId>
      <version>${s4.version}</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>${maven-dependency-plugin.version}</version>
        <configuration>
          <outputDirectory>${project.build.directory}/lib</outputDirectory>
          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>false</overWriteSnapshots>
          <overWriteIfNewer>true</overWriteIfNewer>

          <excludeGroupIds>org.apache.s4</excludeGroupIds>
          <excludeTransitive>true</excludeTransitive>
        </configuration>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- SAMOA assembly -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>${maven-assembly-plugin.version}</version>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/samoa-s4.xml</descriptor>
          </descriptors>
          <finalName>SAMOA-S4-${project.version}</finalName>
          <attach>false</attach>
          <outputDirectory>../target</outputDirectory>
          <appendAssemblyId>false</appendAssemblyId>
          <archive>
            <manifestEntries>
              <Bundle-Version>${parsedVersion.osgiVersion}</Bundle-Version>
              <Bundle-Description>${project.description}</Bundle-Description>
              <Implementation-Version>${project.version}</Implementation-Version>
              <Implementation-Vendor>Yahoo Labs</Implementation-Vendor>
              <Implementation-Vendor-Id>SAMOA</Implementation-Vendor-Id>
              <S4-App-Class>org.apache.samoa.topology.impl.S4DoTask</S4-App-Class>
              <S4-Version>${s4.version}</S4-Version>
            </manifestEntries>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
