<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2019 Eclipse Foundation and others.
  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:
    Thanh Ha (Eclipse Foundation) - initial implementation
    Rob Stryker, Nick Boldt (Red Hat) - refactor short- and long-running unit tests into suites so quick tests can be run and long-running ones can be run optionally too
-->

<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>
  <parent>
    <groupId>org.eclipse.webtools.javaee</groupId>
    <artifactId>javaee.tests</artifactId>
    <version>3.6.0-SNAPSHOT</version>
  </parent>

  <groupId>org.eclipse.webtools.javaee</groupId>
  <artifactId>org.eclipse.jst.j2ee.tests</artifactId>
  <version>1.2.0-SNAPSHOT</version>
  <!-- temporarily disable runing these tests by switching to packaging = eclipse-plugin instead of eclipse-test-plugin -->
  <packaging>eclipse-plugin</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-surefire-plugin</artifactId>
        <version>${tycho.version}</version>
        <configuration>
            <testSuite>org.eclipse.jst.j2ee.tests</testSuite>
            <testClass>org.eclipse.jst.j2ee.tests.QuickSuite</testClass>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <!-- Do not sign inner jars, see bug 274743 - Some unit tests are sensitive to details of build -->
  <profiles>
    <profile>
      <id>eclipse-sign</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.cbi.maven.plugins</groupId>
            <artifactId>eclipse-jarsigner-plugin</artifactId>
            <version>${cbi-plugins.version}</version>
            <executions>
              <execution>
                <id>sign</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <excludeInnerJars>true</excludeInnerJars>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- building locally, this taker over 1h15min. In WTP JIPP, it's over 2hrs -->
    <profile>
      <id>integration-tests</id>
      <activation>
        <property>
          <name>skipITests</name>
          <value>false</value>
        </property>
      </activation>
      <properties>
        <skipITests>false</skipITests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-surefire-plugin</artifactId>
            <version>${tycho.version}</version>
            <configuration>
              <testSuite>org.eclipse.jst.j2ee.tests</testSuite>
              <testClass>org.eclipse.jst.j2ee.tests.AllTestSuite</testClass>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
   
</project>
