<!-- 
 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>
        
        <module>ipojo</module>
        <module>ipojo.metadata</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> -->


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