<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.felix</groupId>
  <artifactId>felix</artifactId>
  <packaging>pom</packaging>
  <name>Apache Felix (parent)</name>
  <version>0.8.0-SNAPSHOT</version>
  <modules>
    <!-- <module>javax.servlet</module> -->
    <module>tools/maven2/maven-osgi-plugin</module>
    <module>javax.servlet</module>
    <module>org.osgi.core</module>
    <module>org.osgi.compendium</module>
    <module>org.apache.felix.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>org.apache.felix.main</module>

    <module>examples</module>

    <module>org.apache.felix.servicebinder</module>
    <module>org.apache.felix.wireadmin</module>
    <module>org.apache.felix.upnp.extra</module>
    <module>org.apache.felix.upnp.basedriver</module>
    <module>org.apache.felix.upnp.tester</module>      
    <module>org.apache.felix.upnp.sample.tv</module>
    <module>org.apache.felix.upnp.sample.clock</module>
    <module>org.apache.felix.upnp.sample.binaryLight</module>
    <module>org.apache.felix.http.jetty</module>
    <module>org.apache.felix.scr</module>
    <module>org.apache.felix.eventadmin</module>
    <module>org.apache.felix.eventadmin.bridge.upnp</module>
    <module>org.apache.felix.eventadmin.bridge.configuration</module>
    <module>org.apache.felix.eventadmin.bridge.useradmin</module>
    <module>org.apache.felix.eventadmin.bridge.wireadmin</module>
    <module>org.apache.felix.ipojo</module>
    <module>org.apache.felix.ipojo.metadata</module>
    <module>org.apache.felix.ipojo.plugin</module>
    <module>org.apache.felix.ipojo.arch</module>
  </modules>

  <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>
    <snapshotRepository>
      <name>Apache Snapshots</name>
      <id>apache.snapshots</id>
      <url>
        scp://apache.org/www/cvs.apache.org/maven-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-project-info-reports-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>
</project>
