<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>org.apache.felix.shell</module>
    <module>org.apache.felix.shell.tui</module>
    <module>org.apache.felix.shell.gui</module>
    <module>org.apache.felix.shell.gui.plugin</module>
    <module>org.apache.felix.bundlerepository</module>
    <module>org.apache.felix.daemon</module>
    <module>org.apache.felix.dependencymanager</module>
    <module>org.apache.felix.main</module>
    <module>org.apache.felix.examples.eventlistener</module>
    <module>org.apache.felix.examples.dictionaryservice</module>
    <module>org.apache.felix.examples.frenchdictionary</module>
    <module>org.apache.felix.examples.dictionaryclient</module>
    <module>org.apache.felix.examples.dictionaryclient2</module>
    <module>org.apache.felix.examples.spellcheckservice</module>
    <module>org.apache.felix.examples.spellcheckclient</module>
    <module>org.apache.felix.examples.spellcheckbinder</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>
