<?xml version="1.0" encoding="UTF-8"?>
<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>edapt</groupId>
	<artifactId>root</artifactId>
	<version>1.5.0-SNAPSHOT</version>
	<packaging>pom</packaging>

	<properties>
		<tycho-version>2.3.0</tycho-version>
		<eclipse-jarsigner-version>1.3.1</eclipse-jarsigner-version>
		<maven-surefire-version>2.18.1</maven-surefire-version>
		<junit-version>4.12</junit-version>
		<javadoc-version>2.10.3</javadoc-version>
		<javadoc-title>Edapt 1.5.0 API</javadoc-title>
	</properties>

	<profiles>
		<!-- Profile for use on the eclipse build server. -->
		<profile>
			<id>build-server</id>
			<activation>
				<property>
					<name>build-server</name>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.eclipse.tycho</groupId>
						<artifactId>tycho-compiler-plugin</artifactId>
						<version>${tycho-version}</version>
						<configuration>
							<useJDK>BREE</useJDK>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		
		<profile>
			<id>latest-tp</id>
			<activation>
				<property>
					<name>latest-tp</name>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.eclipse.tycho</groupId>
						<artifactId>target-platform-configuration</artifactId>
						<version>${tycho-version}</version>
						<configuration>
							<target>
								<artifact>
									<groupId>${project.groupId}</groupId>
									<artifactId>${project.artifactId}</artifactId>
									<version>${project.version}</version>
									<classifier>../../builds/org.eclipse.emf.edapt.releng.target/edapt_current</classifier>
								</artifact>
							</target>
							<environments>
								<environment>
									<os>linux</os>
									<ws>gtk</ws>
									<arch>x86_64</arch>
								</environment>
							</environments>
							<includePackedArtifacts>true</includePackedArtifacts>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<!-- Add eclipse maven repo -->
	<pluginRepositories>
		<pluginRepository>
			<id>eclipse-maven-releases</id>
			<url>https://repo.eclipse.org/content/repositories/releases/</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</pluginRepository>
	</pluginRepositories>

	<modules>
		<module>../../plugins</module>
		<module>../../features</module>
		<module>../org.eclipse.emf.edapt.releng.p2</module>
		<module>../../tests/org.eclipse.emf.edapt.tests</module>
		<module>../../tests/org.eclipse.emf.edapt.common.tests</module>
	</modules>

	<build>
		<plugins>

			<!-- Enable tycho -->
			<plugin>
				<groupId>org.eclipse.tycho</groupId>
				<artifactId>tycho-maven-plugin</artifactId>
				<version>${tycho-version}</version>
				<extensions>true</extensions>
			</plugin>

			<!-- Configure target platform-->
			<plugin>
				<groupId>org.eclipse.tycho</groupId>
				<artifactId>target-platform-configuration</artifactId>
				<version>${tycho-version}</version>
				<configuration>
					<target>
						<artifact>
							<groupId>${project.groupId}</groupId>
							<artifactId>${project.artifactId}</artifactId>
							<version>${project.version}</version>
							<classifier>../../builds/org.eclipse.emf.edapt.releng.target/edapt_with_cdo</classifier>
						</artifact>
					</target>
					<environments>
						<environment>
							<os>linux</os>
							<ws>gtk</ws>
							<arch>x86_64</arch>
						</environment>
					</environments>
					<includePackedArtifacts>true</includePackedArtifacts>
				</configuration>
			</plugin>


			<!-- For version handling -->
			<plugin>  
				<groupId>org.eclipse.tycho</groupId>  
				<artifactId>tycho-versions-plugin</artifactId>  
				<version>${tycho-version}</version>  
			</plugin>
			
			<!-- Javadoc -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>${javadoc-version}</version>
				<configuration>
					<doctitle>${javadoc-title}</doctitle>
					<show>protected</show>
					<show>public</show>
					<nohelp>true</nohelp>
					<failOnError>false</failOnError>
					<excludePackageNames>*.test.*:*.tests.*:*.library.*:*.statemachine.*</excludePackageNames>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit-version}</version>
				<scope>test</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

</project>
