<?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.mnemonic</groupId>
    <artifactId>mnemonic-parent</artifactId>
    <version>0.1.2-incubating</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
 
  <artifactId>mnemonic-memory-services</artifactId>
  <name>mnemonic-memory-services</name>
  <packaging>pom</packaging> 
  <url>http://mnemonic.incubator.apache.org</url>

  <properties>
    <service.basedir>${project.parent.basedir}</service.basedir>
  </properties>

  <modules>
    <module>mnemonic-nvml-vmem-service</module>
    <module>mnemonic-pmalloc-service</module>
  </modules>

  <dependencies>
    <dependency>
      <groupId>org.apache.mnemonic</groupId>
      <artifactId>mnemonic-core</artifactId>
      <version>${project.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.flowcomputing.commons</groupId>
      <artifactId>commons-primitives</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.6</version>
          <configuration>
            <forceCreation>true</forceCreation>
	    <outputDirectory>${service.basedir}/service-dist</outputDirectory>
	    <archive>
	      <addMavenDescriptor>false</addMavenDescriptor>
	    </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>2.4.3</version>
	  <executions>
	    <execution>
	      <phase>package</phase>
	      <goals>
		<goal>shade</goal>
	      </goals>
	      <configuration>
		<minimizeJar>true</minimizeJar>
		<filters>
		  <filter>
		    <artifact>*:*</artifact>
		    <includes>
		    </includes>
		    <excludes>
		      <exclude>META-INFO/**/**</exclude>
		      <exclude>META-INFO/services/**</exclude>
		      <exclude>META-INFO/maven/**</exclude>
		    </excludes>
		  </filter>
		  
		</filters>
	      </configuration>
	    </execution>
	  </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>
