<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2019 IBM Corporation 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:
    IBM Corporation - initial API and 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>tests-pom</artifactId>
    <groupId>eclipse.jdt.core</groupId>
    <version>4.13.0-SNAPSHOT</version>
    <relativePath>../tests-pom/</relativePath>
  </parent>
  <groupId>org.eclipse.jdt</groupId>
  <artifactId>org.eclipse.jdt.tests.latestBREE</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <properties>
    <defaultSigning-excludeInnerJars>true</defaultSigning-excludeInnerJars>
  </properties>

  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.eclipse.tycho</groupId>
	  		<artifactId>tycho-surefire-plugin</artifactId>
	  		<version>${tycho.version}</version>
	  		<configuration>
	  			<includes>
	  				<include>org/eclipse/jdt/core/tests/compiler/regression//latest/TestAll.class</include>
	  			</includes>
	  			<argLine>${tycho.surefire.argLine}</argLine>
	  		</configuration>
  		</plugin>
  	</plugins>
  </build>

  <profiles>
	<profile>
		<id>test-on-javase-13</id>
		<build>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-toolchains-plugin</artifactId>
					<configuration>
						<toolchains>
							<jdk>
								<id>JavaSE-13</id>
							</jdk>
						</toolchains>
					</configuration>
				</plugin>
			</plugins>
		</build>
		<properties>
			<tycho.surefire.argLine>--add-modules ALL-SYSTEM -Dcompliance=1.4,1.7,1.8,13</tycho.surefire.argLine>
		</properties>
	</profile>
	<profile>
		<id>test-on-javase-14</id>
		<build>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-toolchains-plugin</artifactId>
					<configuration>
						<toolchains>
							<jdk>
								<id>JavaSE-14</id>
							</jdk>
						</toolchains>
					</configuration>
				</plugin>
			</plugins>
		</build>
		<properties>
			<tycho.surefire.argLine>--add-modules ALL-SYSTEM -Dcompliance=1.4,1.7,1.8,13,14</tycho.surefire.argLine>
		</properties>
	</profile>
	<profile>
		<id>test-on-javase-15</id>
		<build>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-toolchains-plugin</artifactId>
					<configuration>
						<toolchains>
							<jdk>
								<id>JavaSE-15</id>
							</jdk>
						</toolchains>
					</configuration>
				</plugin>
			</plugins>
		</build>
		<properties>
			<tycho.surefire.argLine>--add-modules ALL-SYSTEM -Dcompliance=1.4,1.7,1.8,13,14,15</tycho.surefire.argLine>
		</properties>
	</profile>
  </profiles>

</project>
