<?xml version="1.0" encoding="UTF-8"?>

<!--
  Copyright (c) 2013-2015 LAAS-CNRS (www.laas.fr) 
  7 Colonel Roche 31077 Toulouse - France
  
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/legal/epl-v10.html
  
  Contributors:
      Thierry Monteil (Project co-founder) - Management and initial specification, 
  		conception and documentation.
      Mahdi Ben Alaya (Project co-founder) - Management and initial specification, 
  		conception, implementation, test and documentation.
      Christophe Chassot - Management and initial specification.
      Khalil Drira - Management and initial specification.
      Yassine Banouar - Initial specification, conception, implementation, test 
  		and documentation.
      Guillaume Garzone - Conception, implementation, test and documentation.
      Francois Aissaoui - Conception, implementation, test and documentation.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.eclipse.om2m</groupId>
  <artifactId>org.eclipse.om2m</artifactId>
  <version>0.8.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>org.eclipse.om2m :: parent</name>
  <description>org.eclipse.om2m parent</description>

  <prerequisites>
    <maven>3.0</maven>
  </prerequisites>

  <properties>
    <java.version>1.7</java.version>
    <maven.version>3.0</maven.version>
    <tycho.version>0.20.0</tycho.version>
    <tycho.test.jvmArgs>-Xmx512m -XX:MaxPermSize=256m</tycho.test.jvmArgs>
  </properties>

  <repositories>
    <repository>
      <id>luna</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/releases/luna</url>
    </repository>
  </repositories>
  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
        <version>${tycho.version}</version>
        <extensions>true</extensions>
      </plugin>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <resolver>p2</resolver>
          <pomDependencies>consider</pomDependencies>
          <ignoreTychoRepositories>true</ignoreTychoRepositories>

          <environments>
           <!-- <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86_64</arch>
            </environment>
             <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86_64</arch>
            </environment>
             <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86</arch>
            </environment>
            <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86</arch>
            </environment>

            <environment>
              <os>macosx</os>
              <ws>cocoa</ws>
              <arch>x86_64</arch>
            </environment> -->

          </environments>

        </configuration>
      </plugin>



      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-packaging-plugin</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <format>yyyyMMdd-HHmm</format>

          <archiveSite>true</archiveSite>
          <environments>

           <!-- <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86_64</arch>
            </environment>
               <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86_64</arch>
            </environment>
             <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86</arch>
            </environment>
            <environment>
              <os>macosx</os>
              <ws>cocoa</ws>
              <arch>x86</arch>
            </environment>
            <environment>
              <os>macosx</os>
              <ws>cocoa</ws>
              <arch>x86_64</arch>
            </environment>

            <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86</arch>
            </environment>-->
          </environments>
        </configuration>
      </plugin>

    </plugins>

    <pluginManagement>

      <plugins>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-surefire-plugin</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <useUIHarness>true</useUIHarness>
            <includes>
              <include>**/*Test.java</include>
            </includes>
            <argLine>${tycho.test.jvmArgs}</argLine>
            <!-- kill test JVM if tests take more than 1 minute (60 seconds) to
              finish -->
            <forkedProcessTimeoutInSeconds>60</forkedProcessTimeoutInSeconds>
          </configuration>
        </plugin>


        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.3</version>
        </plugin>



        <!-- Ignore/Execute plugin execution -->
         <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                copy-dependency plugin
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>copy-dependencies</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.jacoco</groupId>
                    <artifactId>
                      jacoco-maven-plugin
                    </artifactId>
                    <versionRange>
                      [0.5.3.201107060350,)
                    </versionRange>
                    <goals>
                      <goal>prepare-agent</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>

      </plugins>
  </pluginManagement>
  </build>

  <modules>
    <module>org.eclipse.om2m.core</module>
    <module>org.eclipse.om2m.core.service</module>
    <module>org.eclipse.om2m.commons</module>
    <module>org.eclipse.om2m.comm.http</module>
    <module>org.eclipse.om2m.comm.coap</module>
    <module>org.eclipse.om2m.comm.service</module>
    <module>org.eclipse.om2m.ipu.sample</module>
	<module>org.eclipse.om2m.ipu.service</module>
    <module>org.eclipse.om2m.webapp.resourcesbrowser</module>
    <module>org.eclipse.om2m.site.nscl</module>
    <module>org.eclipse.om2m.site.gscl</module>
  </modules>

</project>
