<?xml version="1.0"?>
<!--
 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>
  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>felix</artifactId>
    <version>1.0.4</version>
    <relativePath>../pom/pom.xml</relativePath>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <artifactId>mosgi</artifactId>
  <name>Apache Felix MOSGi</name>
  <version>0.0.1</version>
  <packaging>pom</packaging>
  <modules>
    <module>console.ifc</module>
    <module>console.component</module>
    <module>console.gui</module>
    <module>jmx.agent</module>
    <module>jmx.httpconnector</module>
    <module>jmx.registry</module>
    <module>jmx.remotelogger</module>
    <module>jmx.rmiconnector</module>
    <module>managedelements.osgiprobes</module>
    <module>managedelements.osgiprobes.tab</module>
    <module>managedelements.bundlesprobes</module>
    <module>managedelements.bundlesprobes.tab</module>
    <module>managedelements.obrprobe</module>
    <module>managedelements.obrprobe.tab</module>
    <module>managedelements.memoryprobe</module>
  </modules>
</project>

