<!-- 
 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>5</version>
  </parent>

  <groupId>org.apache.felix</groupId>
  <artifactId>reactor</artifactId>
  <packaging>pom</packaging>
  <name>Apache Felix</name>
  <!-- We just increase the version each time the list of modules changes -->
  <version>1</version>
  <description>Apache Felix Reactor POM</description>
  <!-- 
  Felix contains 2 custom maven packaging plugins. Each creates a jar file
  as an artifact. 
  
  maven-bundle-plugin 
    (bundle packaging - latest prefered plugin for generating OSGi bundles.)
  maven-osgi-plugin 
    (osgi-bundle packaging - old plugin for generating OSGi bundles.)
    
  But with maven bug https://issues.apache.org/jira/browse/FELIX-198 files
  are not always created with the correct extension in the repository.

  As a work around, this pom creates different profiles for building the 
  different types of felix modules. 

  Usage:
  mvn -Dpackaging=<type> clean install
  -->

  <profiles>

    <profile>
      <id>packaging-plugins</id>
      <activation>
        <property>
          <name>packaging</name>
          <value>plugins</value>
        </property>
      </activation>
      <modules>
        <module>maven-obr-plugin</module>
        <module>bundleplugin</module>
        <module>scr-annotations</module>
        <module>scrplugin</module>
        <module>tools/maven2/maven-osgi-plugin</module>
<!--        <module>tools/maven2/maven-felix-plugin</module> -->
      </modules>
    </profile>

    <profile>
      <id>packaging-ipojo-bundle</id>
      <activation>
        <property>
          <name>packaging</name>
          <value>ipojo-bundle</value>
        </property>
      </activation>
      <modules>
        <!--<module>ipojo/arch</module>-->
      </modules>
    </profile>

    <profile>
      <id>packaging-bundle</id>
      <activation>
        <property>
          <name>packaging</name>
          <value>bundle</value>
        </property>
      </activation>
      <modules>        
        <module>org.osgi.foundation</module>
        <module>javax.servlet</module>
        <module>org.osgi.core</module>
        <module>org.osgi.compendium</module>
        <module>framework</module>
        <module>main</module>
        <module>shell</module>
        <module>shell.tui</module>
        <module>shell.gui</module>
        <module>shell.gui.plugin</module>
        <module>shell.remote</module>
        <module>org.osgi.service.obr</module>
        <module>bundlerepository</module>
        <module>log</module>
        <module>eventadmin</module>
        <module>http</module>
        <!--module>http.jetty</module-->
        <module>upnp</module>
        <module>scr</module>
        <module>configadmin</module>
        <module>metatype</module>
        <module>dependencymanager</module>
        <module>deploymentadmin</module>
        <module>servicebinder</module>
        <module>wireadmin</module>
        <module>prefs</module>
        <module>webconsole</module>
        <module>webconsole-plugins/event</module>
        <module>fileinstall</module>
        <module>useradmin</module>

        <module>ipojo</module>

        <module>mosgi</module> 
        <module>jmood</module> 
        
        <module>transaction</module>

        <module>examples</module>
      </modules>
    </profile>
    
    <profile>
      <id>packaging-osgi-bundle</id>
      <activation>
        <property>
          <name>packaging</name>
          <value>osgi-bundle</value>
        </property>
      </activation>
      <modules>
        <module>org.apache.felix.daemon</module>

        <!--    <module>tools/mangen</module> -->


      </modules>
    </profile>

    <profile>
      <id>packaging-karaf</id>
      <activation>
        <property>
          <name>packaging</name>
          <value>karaf</value>
        </property>
      </activation>
      <modules>
        <module>karaf</module>
      </modules>
    </profile>

  </profiles>
</project>
