<!--
 * Copyright (c) 2011 PetalsLink
 *  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:
 *      Mickael istria (PetalsLink)
-->
<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>
	<groupId>org.eclipse.gmf-tooling</groupId>
	<artifactId>tests</artifactId>
	<packaging>pom</packaging>
	<version>2.4.1-SNAPSHOT</version>

	<parent>
		<groupId>org.eclipse.gmf-tooling</groupId>
		<artifactId>parent</artifactId>
		<version>2.4.1-SNAPSHOT</version>
		<relativePath>../</relativePath>
	</parent>

	<modules>
		<module>org.eclipse.gmf.tests</module>
		<module>org.eclipse.gmf.tests.lite</module>
		<module>org.eclipse.gmf.tests.xpand</module>
		<module>org.eclipse.gmf.tests.xpand.migration</module>
	</modules>
	
	<profiles>
		<profile>
			<id>jacoco</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<!-- Properties to enable jacoco code coverage analysis -->
				<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
				<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
				<sonar.jacoco.itReportPath>../target/jacoco.exec</sonar.jacoco.itReportPath>
			</properties>
			<build>
				<plugins>
					<!-- Enabling use of jacoco -->
					<plugin>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
						<version>0.5.3.201107060350</version>
						<executions>
							<execution>
								<goals>
									<goal>prepare-agent</goal>
								</goals>
								<configuration>
									<!-- Where to put jacoco coverage report -->
									<destFile>${sonar.jacoco.itReportPath}</destFile>
									<includes>*.gmf.*</includes>
									<append>true</append>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
	
	<repositories>
		<repository>
			<id>SWTBot</id>
			<layout>p2</layout>
			<url>http://download.eclipse.org/technology/swtbot/helios/dev-build/update-site/</url>
		</repository>
	</repositories>

</project>