<?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>
    <packaging>pom</packaging>
    <name>Apache Felix Commons: Reactor</name>
    <groupId>org.apache.felix.commons</groupId>
    <artifactId>reactor</artifactId>
    <version>1</version>
    <description>
        This is just a convenience reactor build.
    </description>

    <modules>
        <!-- parent pom for all contained modules -->
        <module>pom</module>
        <!-- The bundles: -->
        <module>activation</module>
        <module>antlr</module>
        <module>aopalliance</module>
        <module>avalon-framework</module>
        <module>cglib</module>
        <module>commons-attributes-api</module>
        <module>commons-attributes-compiler</module>
        <module>commons-beanutils</module>
        <module>commons-codec</module>
        <module>commons-collections</module>
        <module>commons-configuration</module>
        <module>commons-digester</module>
        <module>commons-el</module>
        <module>commons-email</module>
        <module>commons-fileupload</module>
        <module>commons-httpclient</module>
        <module>commons-io</module>
        <module>commons-jxpath</module>
        <module>commons-lang</module>
        <module>commons-logging</module>
        <module>commons-validator</module>
        <module>dom4j</module>
        <module>ehcache</module>
        <module>hibernate</module>
        <module>hsqldb</module>
	<module>jline</module>
        <module>jms</module>
        <!-- <module>jmxtools</module>  -->
        <module>jsp-api</module>
        <module>jstl</module>
        <module>jta</module>
        <module>jzlib</module>
        <module>log4j</module>
        <module>logkit</module>
        <module>mail</module>
        <module>poi</module>
        <module>poi-full</module>
        <module>portlet-api</module>
        <module>quartz</module>
        <module>servlet-api</module>
        <module>xercesImpl</module>
        <module>xml-apis</module>
        <module>xml-resolver</module>
    </modules>
</project>
