<?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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.cxf.dosgi.samples</groupId>
  <artifactId>cxf-dosgi-ri-samples-spring-dm-impl</artifactId>
  <packaging>bundle</packaging>
  <name>Distributed OSGI Spring-DM Sample Implementation Bundle</name>
  <version>1.8-SNAPSHOT</version>

  <parent>
    <groupId>org.apache.cxf.dosgi.samples</groupId>
    <artifactId>cxf-dosgi-ri-samples-spring-dm-parent</artifactId>
    <version>1.8-SNAPSHOT</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.apache.cxf.dosgi.samples</groupId>
      <artifactId>cxf-dosgi-ri-samples-spring-dm-interface</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-Name>CXF Distributed OSGi Spring-DM Sample Implementation Bundle</Bundle-Name>
            <Bundle-Description>The server-side implementation of the Distributed OSGi with Spring-DM sample</Bundle-Description>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <Import-Package>org.apache.cxf.dosgi.samples.springdm</Import-Package>
            <Private-Package>org.apache.cxf.dosgi.samples.springdm.impl</Private-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
