<?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</artifactId>
    <version>1.8-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Distributed OSGI RI Sample Bundles</name>
    <url>http://cxf.apache.org/</url>

    <parent>
      <groupId>org.apache.cxf.dosgi</groupId>
      <artifactId>cxf-dosgi-ri-parent</artifactId>
      <version>1.8-SNAPSHOT</version>
      <relativePath>../parent/pom.xml</relativePath>
    </parent>

    <modules>
      <module>greeter</module>
      <module>greeter_rest</module>
      <module>spring_dm</module>
      <module>ds</module>
      <module>discovery</module>
      <module>security_filter</module>
    </modules>
</project>
