<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (c) 2012 BSI Business Systems Integration AG.
   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:
     Stephan Leicht Vogt - initial implementation
-->
<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>

  <prerequisites>
    <maven>3.0</maven>
  </prerequisites>

  <parent>
    <groupId>org.eclipse.scout</groupId>
    <artifactId>eclipse.scout-aggregator</artifactId>
    <version>4.0.0-SNAPSHOT</version>
  </parent>

  <artifactId>org.eclipse.scout.parent</artifactId>
  <packaging>pom</packaging>

  <mailingLists>
    <mailingList>
      <name>scout-dev Mailing List</name>
      <post>scout-dev@eclipse.org</post>
      <subscribe>https://dev.eclipse.org/mailman/listinfo/scout-dev</subscribe>
      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/scout-dev</unsubscribe>
      <archive>http://dev.eclipse.org/mhonarc/lists/scout-dev</archive>
    </mailingList>
  </mailingLists>

  <scm>
    <url>http://git.eclipse.org/c/scout/org.eclipse.scout-aggregator.git/</url>
    <connection>scm:git:git://git.eclipse.org/gitroot/scout/org.eclipse.scout-aggregator.git</connection>
  </scm>

  <issueManagement>
    <url>https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;product=Scout;classification=Technology</url>
    <system>Bugzilla</system>
  </issueManagement>

  <licenses>
    <license>
      <name>Eclipse Public License v1.0</name>
      <comments>
       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.htm
      </comments>
    </license>
  </licenses>

  <properties>
    <buildType>N</buildType>
    <stageTargetDir>nightly/4.0</stageTargetDir>
    <maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
    <buildId>${buildType}${maven.build.timestamp}</buildId>
    <buildsToKeep>3</buildsToKeep>

    <comparator.repo>http://download.eclipse.org/eclipse/updates/4.3-M-builds</comparator.repo>
    <tycho.version>0.19.0</tycho.version>
    <tycho-extras.version>0.19.0</tycho-extras.version>
    <cbi-plugins.version>1.0.5</cbi-plugins.version>
    <jarsigner.version>1.0.5</jarsigner.version>

    <compileSource>1.6</compileSource>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    <target-platform>eclipse-3.6</target-platform>
    <rap-repo-target-platform>eclipse-staging</rap-repo-target-platform>
    <rap-repo-platform-version>[3.10,3.11)</rap-repo-platform-version>

    <tycho-repo.url>https://oss.sonatype.org/content/groups/public/</tycho-repo.url>
    <cbi-jdt-repo.url>https://repo.eclipse.org/content/repositories/eclipse-staging/</cbi-jdt-repo.url>
    <cbi-jdt-version>3.10.0.v20140120-2305</cbi-jdt-version>
    <cbi-snapshots-repo.url>https://repo.eclipse.org/content/groups/cbi/</cbi-snapshots-repo.url>
    <eclipse-repo.url>https://repo.eclipse.org/content/repositories/releases/</eclipse-repo.url>

<!-- UI-Test (Tycho-Tests) Arguments -->
    <ui.test.vmargs.all>${tycho.testArgLine} -Xms512m -Xmx1024m -XX:MaxPermSize=256m -DbuildingWithTycho=true</ui.test.vmargs.all>
    <ui.test.vmargs.mac>-XstartOnFirstThread</ui.test.vmargs.mac>
    <ui.test.vmargs>${ui.test.vmargs.all}</ui.test.vmargs>
  </properties>

  <repositories>
    <repository>
      <id>eclipse</id>
      <url>${eclipse-repo.url}</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>tycho</id>
      <url>${tycho-repo.url}</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>

    <pluginRepository>
      <id>cbi-snapshots</id>
      <url>${cbi-snapshots-repo.url}</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>

    <pluginRepository>
      <id>eclipse</id>
      <url>${eclipse-repo.url}</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>

    <pluginRepository>
      <id>cbi-jdt</id>
      <url>${cbi-jdt-repo.url}</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <build>
    <testResources>
      <testResource>
        <directory>testResources</directory>
        <filtering>true</filtering>
      </testResource>
    </testResources>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>target-platform-configuration</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <filters>
              <!-- work around Equinox bug 348045 -->
              <filter>
                <type>p2-installable-unit</type>
                <id>org.eclipse.equinox.servletbridge.extensionbundle</id>
                <removeAll />
              </filter>
            </filters>
            <resolver>p2</resolver>
            <pomDependencies>consider</pomDependencies>
            <target>
              <artifact>
                <groupId>org.eclipse.scout</groupId>
                <artifactId>org.eclipse.scout.target</artifactId>
                <version>${scout.version}</version>
                <classifier>${target-platform}</classifier>
              </artifact>
            </target>
            <environments>
              <environment>
                <os>linux</os>
                <ws>gtk</ws>
                <arch>x86</arch>
              </environment>
              <environment>
                <os>linux</os>
                <ws>gtk</ws>
                <arch>x86_64</arch>
              </environment>
              <environment>
                <os>linux</os>
                <ws>gtk</ws>
                <arch>ppc64</arch>
              </environment>
              <environment>
                <os>linux</os>
                <ws>gtk</ws>
                <arch>s390</arch>
              </environment>
              <environment>
                <os>linux</os>
                <ws>gtk</ws>
                <arch>s390x</arch>
              </environment>
              <environment>
                <os>win32</os>
                <ws>win32</ws>
                <arch>x86</arch>
              </environment>
              <environment>
                <os>win32</os>
                <ws>win32</ws>
                <arch>x86_64</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>solaris</os>
                <ws>gtk</ws>
                <arch>sparc</arch>
              </environment>
              <environment>
                <os>solaris</os>
                <ws>gtk</ws>
                <arch>x86</arch>
              </environment>
            </environments>
          </configuration>
        </plugin>

        <plugin>
          <!-- Used for attaching target-files to the artifact in org.eclipse.scout.target -->
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>1.7</version>
        </plugin>

        <plugin>
          <!-- Activates Tycho so Maven knows the new packaging types eclipse-plugin... -->
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-maven-plugin</artifactId>
          <version>${tycho.version}</version>
          <extensions>true</extensions>
        </plugin>

        <plugin>
          <groupId>org.eclipse.cbi.maven.plugins</groupId>
          <artifactId>eclipse-cbi-plugin</artifactId>
          <version>${cbi-plugins.version}</version>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-compiler-plugin</artifactId>
          <version>${tycho.version}</version>
          <dependencies>
            <dependency>
              <groupId>org.eclipse.jdt</groupId>
              <artifactId>org.eclipse.jdt.core</artifactId>
              <version>${cbi-jdt-version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <source>${compileSource}</source>
            <encoding>${project.build.sourceEncoding}</encoding>
            <showWarnings>true</showWarnings>
            <showDeprecation>true</showDeprecation>
            <extraClasspathElements>
              <extraClasspathElement>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
                <version>1.4.3</version>
              </extraClasspathElement>
              <extraClasspathElement>
                <groupId>javax.jms</groupId>
                <artifactId>jms-api</artifactId>
                <version>1.1-rev-1</version>
              </extraClasspathElement>
              <extraClasspathElement>
                <groupId>jdk</groupId>
                <artifactId>tools.jar</artifactId>
                <version>1.0.0</version>
                <scope>system</scope>
                <systemPath>${tools-jar}</systemPath>
              </extraClasspathElement>
            </extraClasspathElements>
            <compilerArgument>-warn:-deprecation,raw,unchecked</compilerArgument>
            <compilerArguments>
              <inlineJSR />
              <enableJavadoc />
              <encoding>${project.build.sourceEncoding}</encoding>
              <log>${project.build.directory}/@dot.xml</log>
            </compilerArguments>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-packaging-plugin</artifactId>
          <version>${tycho.version}</version>
          <dependencies>
            <dependency>
              <groupId>org.eclipse.tycho.extras</groupId>
              <artifactId>tycho-buildtimestamp-jgit</artifactId>
              <version>${tycho-extras.version}</version>
            </dependency>
            <dependency>
              <groupId>org.eclipse.tycho.extras</groupId>
              <artifactId>tycho-sourceref-jgit</artifactId>
              <version>${tycho-extras.version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <strictBinIncludes>false</strictBinIncludes>
            <format>yyyyMMdd-HHmm</format>
            <timestampProvider>jgit</timestampProvider>
            <jgit.ignore>
              pom.xml
            </jgit.ignore>
            <sourceReferences>
              <generate>true</generate>
            </sourceReferences>
            <archive>
              <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
            <additionalFileSets>
              <fileSet>
                <directory>${project.build.directory}</directory>
                <includes>
                  <include>.api_description</include>
                </includes>
              </fileSet>
            </additionalFileSets>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-surefire-plugin</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <!-- <debugPort>5050</debugPort> -->
            <!-- don't run tests in UI thread and harness per default (i.e., run them headless) -->
            <!-- see http://wiki.eclipse.org/Minerva#Headless_Tests -->
            <!-- see http://wiki.eclipse.org/Tycho/Packaging_Types#eclipse-test-plugin for semantics of useUIHarness etc. -->
            <useUIHarness>false</useUIHarness>
            <useUIThread>false</useUIThread>
            <!-- Convention: We don't use test suites. All Test classes should end with "*Test.java". Everything else is not executed by default. -->
            <includes>
              <include>**/*Test.java</include>
            </includes>
            <excludes>
              <!-- test mojo matches TestProject be default and treats it as PojoTest -->
              <exclude>**/Test*.class</exclude>
            </excludes>
            <!-- Kill test JVM if tests take more than 5 minutes (300 seconds) to finish -->
            <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-source-plugin</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <archive>
              <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-director-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-repository-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho.extras</groupId>
          <artifactId>tycho-source-feature-plugin</artifactId>
          <version>${tycho-extras.version}</version>
          <configuration>
            <archive>
              <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho.extras</groupId>
          <artifactId>tycho-custom-bundle-plugin</artifactId>
          <version>${tycho-extras.version}</version>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-plugin</artifactId>
          <version>${tycho.version}</version>
          <configuration>
            <baselineMode>warn</baselineMode>
            <baselineReplace>none</baselineReplace>
            <baselineRepositories>
              <repository>
                <url>${comparator.repo}</url>
              </repository>
            </baselineRepositories>
          </configuration>
        </plugin>
        <!--This plugin's configuration is used to store Eclipse m2e settings
          only. It has no influence on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>
                      org.eclipse.cbi.maven.plugins
                    </groupId>
                    <artifactId>
                      eclipse-cbi-plugin
                    </artifactId>
                    <versionRange>
                      [1.0.1-SNAPSHOT,)
                    </versionRange>
                    <goals>
                      <goal>
                        generate-api-build-xml
                      </goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>

    <!--Use this plugin to set the version to a release or snapshot in Manifests, poms, repositories-->
     <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-versions-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>

      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.eclipse.cbi.maven.plugins</groupId>
        <artifactId>eclipse-cbi-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>generate-api-build-xml</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-source-plugin</artifactId>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>plugin-source</id>
            <goals>
              <goal>plugin-source</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>default-profile</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <file>
          <exists>${java.home}/../lib/tools.jar</exists>
        </file>
      </activation>
      <properties>
        <tools-jar>${java.home}/../lib/tools.jar</tools-jar>
      </properties>
    </profile>
    <profile>
      <id>mac-profile</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <file>
          <exists>${java.home}/../Classes/classes.jar</exists>
        </file>
      </activation>
      <properties>
        <tools-jar>${java.home}/../Classes/classes.jar</tools-jar>
      </properties>
    </profile>

    <profile>
      <id>mac-test-vmargs</id>
      <activation>
        <os>
          <family>mac</family>
        </os>
      </activation>
      <properties>
        <ui.test.vmargs>${ui.test.vmargs.all} ${ui.test.vmargs.mac}</ui.test.vmargs>
      </properties>
    </profile>

    <profile>
      <id>eclipse-sign</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <version>${tycho.version}</version>
            <configuration>
              <includePackedArtifacts>false</includePackedArtifacts>
            </configuration>
          </plugin>

          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-pack200a-plugin</artifactId>
            <version>${tycho-extras.version}</version>
            <executions>
              <execution>
                <id>pack200-normalize</id>
                <goals>
                  <goal>normalize</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.eclipse.cbi.maven.plugins</groupId>
            <artifactId>eclipse-jarsigner-plugin</artifactId>
            <version>${jarsigner.version}</version>
            <executions>
              <execution>
                <id>sign</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-pack200b-plugin</artifactId>
            <version>${tycho-extras.version}</version>
            <executions>
              <execution>
                <id>pack200-pack</id>
                <goals>
                  <goal>pack</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-p2-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>p2-metadata</id>
                <goals>
                  <goal>p2-metadata</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
            <configuration>
              <defaultP2Metadata>false</defaultP2Metadata>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>eclipse-pack</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <version>${tycho.version}</version>
            <configuration>
              <includePackedArtifacts>true</includePackedArtifacts>
            </configuration>
          </plugin>

          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-pack200a-plugin</artifactId>
            <version>${tycho-extras.version}</version>
            <executions>
              <execution>
                <id>pack200-normalize</id>
                <goals>
                  <goal>normalize</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-pack200b-plugin</artifactId>
            <version>${tycho-extras.version}</version>
            <executions>
              <execution>
                <id>pack200-pack</id>
                <goals>
                  <goal>pack</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-p2-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
              <execution>
                <id>p2-metadata</id>
                <goals>
                  <goal>p2-metadata</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
            <configuration>
              <defaultP2Metadata>false</defaultP2Metadata>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>bree-libs</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.tycho</groupId>
              <artifactId>tycho-compiler-plugin</artifactId>
              <version>${tycho.version}</version>
              <configuration>
                <!-- this tells Tycho to use JRE libraries that match bundle
                  runtime execution environment http://wiki.eclipse.org/Tycho/Release_Notes/0.14
                  TODO provide CBI-specific wiki that explains how to setup BREE libraries
                  and toolchain.xml -->
                <useJDK>BREE</useJDK>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>noJacoco</id>
      <activation>
        <property>
          <name>!codecoverage</name>
        </property>
      </activation>
      <properties>
        <tycho.testArgLine></tycho.testArgLine>
      </properties>
    </profile>

    <profile>
      <id>jacoco</id>
      <activation>
        <property>
          <name>codecoverage</name>
        </property>
      </activation>
      <properties>
        <!-- Jacoco version -->
        <jacoco.version>0.6.3.201306030806</jacoco.version>
        <!-- Sonar properties -->
        <!-- Tells Sonar to reuse existing reports -->
        <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
        <!-- Tells Sonar where the unit tests execution reports are -->
        <sonar.surefire.reportsPath>reports/junit</sonar.surefire.reportsPath>
        <!-- Tells Sonar that the code coverage tool by unit tests is JaCoCo -->
        <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
        <!-- Tells Sonar where the unit tests code coverage report is -->
        <!-- Points to the target folder of the global parent project -->
        <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
      </properties>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.jacoco</groupId>
              <artifactId>jacoco-maven-plugin</artifactId>
              <version>${jacoco.version}</version>
              <executions>
                <execution>
                  <goals>
                    <goal>prepare-agent</goal>
                  </goals>
                  <configuration>
                    <append>true</append>
                    <destFile>${sonar.jacoco.reportPath}</destFile>
                  </configuration>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>platform-ganymede</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>ganymede</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.4</target-platform>
        <platform-version>[3.4,3.5)</platform-version>
      </properties>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.tycho</groupId>
              <artifactId>target-platform-configuration</artifactId>
              <version>${tycho.version}</version>
              <configuration>
                <environments>
                  <environment>
                    <os>linux</os>
                    <ws>gtk</ws>
                    <arch>x86</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>win32</os>
                    <ws>win32</ws>
                    <arch>x86_64</arch>
                  </environment>
                </environments>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>platform-galileo</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>galileo</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.5</target-platform>
        <platform-version>[3.5,3.6)</platform-version>
      </properties>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.tycho</groupId>
              <artifactId>target-platform-configuration</artifactId>
              <version>${tycho.version}</version>
              <configuration>
                <environments>
                  <environment>
                    <os>linux</os>
                    <ws>gtk</ws>
                    <arch>x86</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>win32</os>
                    <ws>win32</ws>
                    <arch>x86_64</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>
                </environments>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>platform-helios</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>helios</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.6</target-platform>
        <platform-version>[3.6,3.7)</platform-version>
      </properties>
    </profile>

    <profile>
      <id>platform-indigo</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>indigo</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.7</target-platform>
        <platform-version>[3.7,3.8)</platform-version>
      </properties>
    </profile>

    <profile>
      <id>platform-juno</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>juno</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.8</target-platform>
        <platform-version>[3.8,3.9)</platform-version>
      </properties>
    </profile>

    <profile>
      <id>platform-kepler</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>kepler</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.9</target-platform>
        <platform-version>[3.9,3.10)</platform-version>
      </properties>
    </profile>

    <profile>
      <id>platform-staging</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>staging</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-staging</target-platform>
        <platform-version>[3.10,3.11)</platform-version>
      </properties>
    </profile>

    <profile>
      <id>platform-kepler-i</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>kepler_I</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.9I</target-platform>
        <platform-version>[3.9,3.10)</platform-version>
      </properties>
    </profile>

    <profile>
      <id>platform-luna-i</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>luna_I</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.10I</target-platform>
        <platform-version>[3.10,3.11)</platform-version>
      </properties>
    </profile>

    <profile>
      <id>platform-luna</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>luna</value>
        </property>
      </activation>
      <properties>
        <target-platform>eclipse-3.10</target-platform>
        <platform-version>[3.10,3.11)</platform-version>
      </properties>
    </profile>
  </profiles>
</project>
