<!-- 
 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>
  <modelVersion>4.0.0</modelVersion>

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

  <groupId>org.apache.felix</groupId>
  <artifactId>felix</artifactId>
  <packaging>pom</packaging>
  <name>Apache Felix</name>
  <version>0.9.0-incubator-SNAPSHOT</version>
  <url>http://incubator.apache.org/felix/</url>
  <description>Apache felix is an OSGi implementation.</description>

  <issueManagement>
    <system>Jira</system>
    <url>http://issues.apache.org/jira/browse/FELIX</url>
  </issueManagement>

  <mailingLists>
    <mailingList>
      <name>Felix Dev</name>
      <subscribe>felix-dev-subscribe@incubator.apache.org</subscribe>
      <unsubscribe>felix-dev-unsubscribe@incubator.apache.org</unsubscribe>
      <post>-</post>
      <archive>http://www.mail-archive.com/felix-dev%40incubator.apache.org/</archive>
    </mailingList>
    <mailingList>
      <name>Felix Commits</name>
      <subscribe>felix-commits-subscribe@incubator.apache.org</subscribe>
      <unsubscribe>felix-commits-unsubscribe@incubator.apache.org</unsubscribe>
      <post>-</post>
      <archive>http://www.mail-archive.com/felix-commits%40incubator.apache.org/</archive>
    </mailingList>
  </mailingLists>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/felix</connection>
    <developerConnection>scm:svn:http://svn.apache.org/repos/asf/incubator/felix</developerConnection>
    <url>http://cvs.apache.org/viewcvs.cgi/incubator/felix/?root=Apache-SVN</url>
  </scm>

  <!-- 
  Felix contains 3 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.)
  org.apache.felix.ipojo.plugin 
    (plugin for generating iPOJO 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>tools/maven2/maven-bundle-plugin</module>
        <module>tools/maven2/maven-osgi-plugin</module>
        <module>ipojo.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>bundlerepository</module>
        <module>log</module>
        <module>eventadmin</module>
        <module>eventadmin.bridge.upnp</module>
        <module>eventadmin.bridge.configuration</module>
        <module>eventadmin.bridge.useradmin</module>
        <module>eventadmin.bridge.wireadmin</module>

        <module>scr</module>
        <module>configadmin</module>
        <module>metatype</module>
      </modules>
    </profile>
    
    <profile>
      <id>packaging-osgi-bundle</id>
      <activation>
        <property>
          <name>packaging</name>
          <value>osgi-bundle</value>
        </property>
      </activation>
      <modules>
        <module>shell.gui</module>
        <module>shell.gui.plugin</module>
        <module>org.apache.felix.daemon</module>
        <module>dependencymanager</module>

        <module>examples</module>

        <module>servicebinder</module>
        <module>wireadmin</module>
        <module>upnp.extra</module>
        <module>upnp.basedriver</module>
        <module>upnp.tester</module>
        <module>upnp.sample.tv</module>
        <module>upnp.sample.clock</module>
        <module>upnp.sample.binaryLight</module>
        <!--    <module>http.jetty</module> -->
        

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

        <module>ipojo</module>
        <module>ipojo.metadata</module>
      </modules>
    </profile>

    <profile>
      <id>osgi-bundle-mosgi</id>
      <activation>
        <property>
          <name>packaging</name>
          <value>osgi-bundle-mosgi</value>
        </property>
        <!--Two activation elements don't AND. <jdk>1.5</jdk>-->
      </activation>
      <modules>
        <module>mosgi.console.ifc</module>
        <module>mosgi.console.component</module>
        <module>mosgi.console.gui</module>
        <module>mosgi.jmx.agent</module>
        <module>mosgi.jmx.httpconnector</module>
        <module>mosgi.jmx.registry</module>
        <module>mosgi.jmx.remotelogger</module>
        <module>mosgi.jmx.rmiconnector</module>
        <module>mosgi.managedelements.osgiprobes</module>
        <module>mosgi.managedelements.osgiprobes.tab</module>
        <module>mosgi.managedelements.bundlesprobes</module>
        <module>mosgi.managedelements.bundlesprobes.tab</module>
        <module>mosgi.managedelements.obrprobe</module>
        <module>mosgi.managedelements.obrprobe.tab</module>
        <module>mosgi.managedelements.memoryprobe</module>
      </modules>
    </profile>
  </profiles>

  <!-- Specify a default version number for dependencies -->
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.osgi.core</artifactId>
        <version>0.9.0-incubator-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.osgi.compendium</artifactId>
        <version>0.9.0-incubator-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.framework</artifactId>
        <version>0.9.0-incubator-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.bundlerepository</artifactId>
        <version>0.9.0-incubator-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.mosgi.jmx.registry</artifactId>
        <version>0.9.0-incubator-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.mosgi.jmx.agent</artifactId>
        <version>0.9.0-incubator-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.mosgi.console.ifc</artifactId>
        <version>0.9.0-incubator-SNAPSHOT</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <distributionManagement>
    <site>
      <id>felix website</id>
      <url>file:///${user.dir}/target/site-deployed/</url>
    </site>
    <repository>
      <id>apache.incubator.releases</id>
      <name>Apache Incubator Release Distribution Repository</name>
      <url>scp://people.apache.org/www/people.apache.org/repo/m2-incubating-repository</url>
    </repository>
  </distributionManagement>

  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots</id>
      <name>snapshot plugins</name>
      <url>
        http://people.apache.org/repo/m2-snapshot-repository
      </url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <!-- definitions for testing -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>1.2_Java1.3</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <target>1.4</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
      </plugin>
      <!-- plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
      </plugin -->
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <configuration>
          <templateDirectory>${user.dir}/src/site/</templateDirectory>
          <template>maven-site.vm</template>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jxr-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>index</report>
              <report>dependencies</report>
              <report>project-team</report>
              <report>mailing-list</report>
              <report>issue-tracking</report>
              <report>license</report>
              <report>scm</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <!--plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <aggregate>true</aggregate>
        </configuration> 
      </plugin-->
    </plugins>
  </reporting>
</project>
