<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.felix</groupId>
  <artifactId>felix</artifactId>
  <packaging>pom</packaging>
  <name>Apache Felix</name>
  <version>0.8.0-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>
        
  <modules>
    <module>tools/maven2/maven-osgi-plugin</module>
    <module>javax.servlet</module>
    <module>org.osgi.core</module>
    <module>org.osgi.compendium</module>
    <module>org.osgi.foundation</module>
    <module>framework</module>
    <module>shell</module>
    <module>shell.tui</module>
    <module>shell.gui</module>
    <module>shell.gui.plugin</module>
    <module>bundlerepository</module>
    <module>org.apache.felix.daemon</module>
    <module>org.apache.felix.dependencymanager</module>
    <module>main</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>scr</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>log</module>

    <module>tools/mangen</module>

    <module>ipojo</module>
    <module>ipojo.metadata</module>

  </modules>

  <profiles>
    <profile>
      <id>jdk1.5</id>
      <activation>
        <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>
        <module>ipojo.plugin</module>
        <module>ipojo.arch</module>
      </modules>
    </profile>
    <profile>    
      <id>jdk1.4</id>
      <activation>
        <jdk>1.4</jdk>
      </activation>
      <modules>
        <module>ipojo.plugin</module>
        <module>ipojo.arch</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.8.0-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.osgi.compendium</artifactId>
        <version>0.8.0-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.framework</artifactId>
        <version>0.8.0-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
	<artifactId>org.apache.felix.bundlerepository</artifactId>
	<version>0.8.0-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.mosgi.jmx.registry</artifactId>
        <version>0.9.0-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.mosgi.jmx.agent</artifactId>
        <version>0.9.0-SNAPSHOT</version>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.mosgi.console.ifc</artifactId>
        <version>0.9.0-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://cvs.apache.org/maven-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://minotaur.apache.org/www/www.apache.org/dist/maven-repository
      </url>
    </repository>
  </distributionManagement>

  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots</id>
      <name>snapshot plugins</name>
      <url>
        http://cvs.apache.org/maven-snapshot-repository
      </url>
    </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>
