<!-- 
 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>

    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>17</version>
    </parent>

    <groupId>org.apache.felix</groupId>
    <artifactId>reactor</artifactId>
    <packaging>pom</packaging>
    <name>Apache Felix</name>
    <version>2-SNAPSHOT</version>
    <description>Apache Felix Reactor POM</description>

    <!-- Alphabetical list of modules -->
    <modules>
        <module>bundlerepository</module>
        <module>bundlerepository.osgi-ct</module>
        <module>configadmin</module>
        <module>deploymentadmin</module>
        <module>eventadmin</module>
        <module>examples</module>
        <module>fileinstall</module>
        <module>framework</module>
		<module>gogo</module>
        <module>http</module>
        <module>httplite</module>
        <module>inventory</module>
        <module>ipojo</module>
        <module>jaas</module>
        <module>jmood</module> 
        <module>log</module>
        <module>main</module>
        <module>metatype</module>
        <module>mosgi</module> 
        <module>org.apache.felix.daemon</module>
        <module>org.osgi.service.obr</module>
        <module>prefs</module>
        <module>resolver</module>
        <module>scr</module>
        <module>shell</module>
        <module>shell.tui</module>
        <module>shell.gui</module>
        <module>shell.gui.plugin</module>
        <module>shell.remote</module>
        
        <module>tools/maven-bundle-plugin</module>
        <module>tools/maven-scr-plugin</module>
        <module>tools/org.apache.felix.scr.annotations</module>
        <module>tools/org.apache.felix.scr.ant</module>
        <module>tools/org.apache.felix.scr.bnd</module>
        <module>tools/org.apache.felix.scr.ds-annotations</module>
        <module>tools/org.apache.felix.scr.generator</module>

        <module>transaction</module>
        <module>upnp</module>
        <module>useradmin</module>
        <module>utils</module>
        <module>webconsole</module>
        <module>webconsole-plugins/deppack</module>
        <module>webconsole-plugins/ds</module>
        <module>webconsole-plugins/event</module>
        <module>webconsole-plugins/gogo</module>
        <module>webconsole-plugins/memoryusage</module>
        <module>webconsole-plugins/metatype</module>
        <module>webconsole-plugins/obr</module>
        <module>webconsole-plugins/packageadmin</module>
        <module>webconsole-plugins/script-console</module>
        <module>webconsole-plugins/servicediagnostics</module>
        <module>webconsole-plugins/shell</module>
        <module>webconsole-plugins/subsystems</module>
        <module>webconsole-plugins/upnp</module>
        <module>webconsole-plugins/useradmin</module>
        <module>wireadmin</module>
    </modules>
</project>
