<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright (c) 2012 Tasktop Technologies and others.
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License v2.0
    which accompanies this distribution, and is available at
    http://www.eclipse.org/legal/epl-v20.html

    Contributors:
         Tasktop Technologies - initial API and implementation
 -->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.eclipse.mylyn</groupId>
  <artifactId>maven-parent</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

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

  <properties>
    <tycho-version>0.21.0</tycho-version>

    <analysis.skip>true</analysis.skip>

    <sign.skip>true</sign.skip>
    <sign.alias>default</sign.alias>

    <coverage.skip>true</coverage.skip>
    <coverage.filter></coverage.filter>
    <coverage.destFile>../target/jacoco.exec</coverage.destFile>
    <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.jacoco.reportPath>${coverage.destFile}</sonar.jacoco.reportPath>

    <test.skip>${maven.test.skip}</test.skip>
    <test.linux.skip>true</test.linux.skip>
    <test.osx.skip>true</test.osx.skip>
    <test.windows.skip>true</test.windows.skip>
    <test.component.skip>${test.skip}</test.component.skip>
    <test.integration.skip>${test.all.skip}</test.integration.skip>
    <test.performance.skip>${test.skip}</test.performance.skip>
    <test.system.skip>${test.skip}</test.system.skip>

    <test.vmargs>-ea ${test.osvmargs} ${test.uservmargs}</test.vmargs>
    <test.uservmargs></test.uservmargs>
    <test.osvmargs></test.osvmargs>
    <test.args>-eclipse.keyring ${test.keyring.file} -eclipse.password ${test.keyring.password} ${test.userargs}</test.args>
    <test.userargs></test.userargs>
    <test.keyring.file>${project.build.directory}/.eclipse.keyring</test.keyring.file>
    <test.keyring.password>${project.build.directory}/work/configuration/config.ini</test.keyring.password>
  </properties>

  <profiles>
    <!-- OS and machine specific profiles -->
    <profile>
      <id>coverage-initializer</id>
      <activation>
        <property>
          <name>!coverage.skip</name>
        </property>
      </activation>
      <!-- set default property values if test coverage is diabled -->
      <properties>
        <tycho.testArgLine></tycho.testArgLine>
      </properties>
    </profile>
    <profile>
      <id>osx</id>
      <activation>
        <property>
          <name>java.vendor.url</name>
          <value>http://www.apple.com/</value>
        </property>
      </activation>
      <properties>
        <test.osvmargs>-Dosgi.ws=cocoa -XstartOnFirstThread</test.osvmargs>
        <test.osx.skip>${test.skip}</test.osx.skip>
      </properties>
    </profile>
    <profile>
      <id>windows</id>
      <activation>
        <os>
          <family>Windows</family>
        </os>
      </activation>
      <properties>
        <test.windows.skip>${test.skip}</test.windows.skip>
      </properties>
    </profile>
    <profile>
      <id>linux</id>
      <activation>
        <os>
          <name>Linux</name>
          <family>unix</family>
        </os>
      </activation>
      <properties>
        <test.linux.skip>${test.skip}</test.linux.skip>
      </properties>
    </profile>
  </profiles>

  <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>
        <extensions>true</extensions>
      </plugin>
      <!-- common coverage configuration -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.5.7.201204190339</version>
        <executions>
          <execution>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <configuration>
              <skip>${coverage.skip}</skip>
              <destFile>${coverage.destFile}</destFile>
              <includes>
                <include>${coverage.filter}</include>
              </includes>
              <append>true</append>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- common code signing -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jarsigner-plugin</artifactId>
        <version>1.2</version>
        <executions>
          <execution>
            <id>sign</id>
            <goals>
              <goal>sign</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <skip>${sign.skip}</skip>
          <alias>${sign.alias}</alias>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-source-plugin</artifactId>
          <version>${tycho-version}</version>
          <executions>
            <execution>
              <id>attach-source</id>
              <phase>process-classes</phase>
              <goals>
                <goal>plugin-source</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-compiler-plugin</artifactId>
          <version>${tycho-version}</version>
          <configuration>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>2.4.1</version>
          <configuration>
            <encoding>ISO-8859-1</encoding>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-packaging-plugin</artifactId>
          <version>${tycho-version}</version>
          <configuration>
            <archiveSite>false</archiveSite>
            <archive>
              <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
          </configuration>
        </plugin>
        <!-- code analysis -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>findbugs-maven-plugin</artifactId>
          <version>3.0.5</version>
          <configuration>
            <findbugsXmlOutput>true</findbugsXmlOutput>
            <failOnError>false</failOnError>
            <skip>${analysis.skip}</skip>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <version>2.5</version>
          <configuration>
            <sourceEncoding>utf-8</sourceEncoding>
            <minimumTokens>100</minimumTokens>
            <targetJdk>1.5</targetJdk>
            <format>xml</format>
            <failOnViolation>false</failOnViolation>
            <skip>${analysis.skip}</skip>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>cpd-check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- common test configuration -->
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-surefire-plugin</artifactId>
          <version>${tycho-version}</version>
          <configuration>
            <skip>${test.skip}</skip>
            <useUIThread>true</useUIThread>
            <useUIHarness>true</useUIHarness>
            <failIfNoTests>true</failIfNoTests>
            <forkedProcessTimeoutInSeconds>3600</forkedProcessTimeoutInSeconds>
            <excludes>
              <exclude>**/Test*java</exclude>
            </excludes>
            <argLine>${tycho.testArgLine} -Xmx512m -Djava.io.tmpdir=${project.build.directory} ${test.vmargs}</argLine>
            <appArgLine>${test.args}</appArgLine>
            <application>org.eclipse.ui.ide.workbench</application>
            <!-- <product>org.eclipse.sdk.ide</product> -->
            <dependency-resolution>
              <extraRequirements>
                <requirement>
                  <type>p2-installable-unit</type>
                  <id>org.eclipse.sdk.feature.group</id>
                  <versionRange>0.0.0</versionRange>
                </requirement>
              </extraRequirements>
            </dependency-resolution>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
