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

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <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-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>tools/maven2/maven-bundle-plugin</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>
      </modules>
    </profile>
    
    <profile>
      <id>packaging-osgi-bundle</id>
      <activation>
        <property>
          <name>packaging</name>
          <value>osgi-bundle</value>
        </property>
      </activation>
      <modules>
        <module>tools/maven2/maven-osgi-plugin</module>
        <module>shell.gui</module>
        <module>shell.gui.plugin</module>
        <module>org.apache.felix.daemon</module>
        <module>org.apache.felix.dependencymanager</module>

        <module>examples</module>

        <module>servicebinder</module>
        <module>wireadmin</module>
<!-- upnp modules disabled to avoid build failure during the server updates
        <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>scr</module>

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

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

  <repositories>
    <!-- For snapshots (no release jars or non-apache jars)           -->
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://people.apache.org/repo/m2-snapshot-repository</url>
    </repository>
  
    <repository>
      <id>safehaus</id>
      <name>Alternate Repository for Missing Ibiblio Artifacts</name>
      <url>http://m2.safehaus.org</url>
    </repository>
  </repositories>

  <distributionManagement>
    <site>
      <id>felix website</id>
      <url>file:///${user.dir}/target/site-deployed/</url>
    </site>
    <snapshotRepository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>
        scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository
      </url>
    </snapshotRepository>
    <repository>
      <name>ASF Mirrored M2 Distributions</name>
      <id>apache.distributions</id>
      <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>
