<?xml version="1.0" encoding="UTF-8"?>
<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">

    <!--

        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.
    -->

    <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         !!!!!!                                !!!!!!
         !!!!!!    This pom is only provided   !!!!!!
         !!!!!!   for build convenience and    !!!!!!
         !!!!!!   should not be released       !!!!!!
         !!!!!!                                !!!!!!
         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.apache.clerezza</groupId>
        <artifactId>clerezza</artifactId>
        <version>0.5-SNAPSHOT</version>
        <relativePath>../parent</relativePath>
     </parent>

    <groupId>org.apache.clerezza.provisioning</groupId>
    <artifactId>reactor</artifactId>
    <version>1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Apache Clerezza - Provisioning - Reactor</name>

    <modules>
        <module>felixosgi</module>
        <module>felixweb</module>
        <module>jaxrs-whiteboard</module>
        <module>rdf</module>
        <module>platform.graphnodeprovider</module>
        <module>typehandlerspace</module>
        <module>typerendering</module>
        <module>launchers/shell-launcher</module>
        <module>launchers/full-launcher</module>
    </modules>

</project>