<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012 Eclipse Foundation.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Distribution License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/org/documents/edl-v10.php
 
  Contributors:
     Igor Fedorenko - 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>rt.equinox.framework</artifactId>
    <groupId>org.eclipse.equinox.framework</groupId>
    <version>4.5.2-SNAPSHOT</version>
    <relativePath>../../</relativePath>
  </parent>
  <groupId>org.eclipse.osgi</groupId>
  <artifactId>org.eclipse.osgi.tests</artifactId>
  <version>3.11.0-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <properties>
    <defaultSigning-excludeInnerJars>true</defaultSigning-excludeInnerJars>
    <code.ignoredWarnings>${tests.ignoredWarnings}</code.ignoredWarnings>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-surefire-plugin</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <testFramework>org.junit</testFramework>
          <testSuite>org.eclipse.osgi.tests</testSuite>
          <testClass>org.eclipse.osgi.tests.AutomatedTests</testClass>
          <dependencies>
            <dependency>
              <artifactId>org.eclipse.jdt.junit4.runtime</artifactId>
              <type>eclipse-plugin</type>
            </dependency>
            <dependency>
              <artifactId>org.eclipse.equinox.event</artifactId>
              <type>eclipse-plugin</type>
            </dependency>
            <dependency>
              <artifactId>org.eclipse.equinox.ds</artifactId>
              <type>eclipse-plugin</type>
            </dependency>
          </dependencies>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>osx</id>
      <activation>
        <property>
          <name>java.vendor.url</name>
          <value>http://www.apple.com/</value>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.tycho</groupId>
              <artifactId>tycho-surefire-plugin</artifactId>
              <version>${tycho.version}</version>
              <configuration>
                <argLine>-Xmx512m -XX:MaxPermSize=256m -XstartOnFirstThread</argLine>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>

</project>
