<?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.directmemory</groupId>
    <artifactId>directmemory-serializers</artifactId>
    <version>0.1-incubating</version>
  </parent>

  <artifactId>directmemory-msgpack</artifactId>
  <name>Apache DirectMemory :: Serializers :: MessagePack</name>
  <packaging>bundle</packaging>
  <description>MessagePack serializer adapter for DirectMemory Cache</description>

  <!-- TODO need the help of some OSGi expert here -->
  <properties>
    <osgi.import>
      !org.apache.directmemory*,
      org.msgpack*;version=${msgpack.version},
      com.google.common.base,
      com.google.common.collect,
      org.aspectj.lang,
      org.aspectj.lang.annotation,
      org.aspectj.runtime.internal,
      org.slf4j;resolution:=optional
    </osgi.import>
    <osgi.export>org.apache.directmemory.serialization.msgpack*;version="${project.version}</osgi.export>
  </properties>

  <dependencies>
    <dependency>
      <groupId>${project.parent.groupId}</groupId>
      <artifactId>directmemory-cache</artifactId>
      <version>${project.parent.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.msgpack</groupId>
      <artifactId>msgpack</artifactId>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
      </resource>
    </resources>

  </build>

</project>
