<?xml version="1.0" encoding="UTF-8"?>
<!--
 #=============================================================================#
 # Copyright (c) 2018, 2020 Stephan Wahlbrink and others.
 # 
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License 2.0 which is available at
 # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 # which is available at https://www.apache.org/licenses/LICENSE-2.0.
 # 
 # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 # 
 # Contributors:
 #     Stephan Wahlbrink <sw@wahlbrink.eu> - 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>
	
	<groupId>org.eclipse.statet.rhelp-assemblies</groupId>
	<artifactId>org.eclipse.statet.rhelp.server</artifactId>
	<version>4.2.0-SNAPSHOT</version>
	<packaging>jar</packaging>
	
	<parent>
		<groupId>org.eclipse.statet-releng</groupId>
		<artifactId>spring.boot-parent</artifactId>
		<version>4.2.0-SNAPSHOT</version>
		<relativePath>../../../org.eclipse.statet/releng/spring.boot</relativePath>
	</parent>
	
	<description>RHelp Server</description>
	
	<dependencies>
		<!-- dependency> // inherit declaration from rhelp
			<groupId>org.eclipse.statet.jcommons</groupId>
			<artifactId>org.eclipse.statet.jcommons.util</artifactId>
		</dependency -->
		<dependency>
			<groupId>org.eclipse.statet.rhelp</groupId>
			<artifactId>org.eclipse.statet.rhelp.core</artifactId>
			<version>4.2.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.statet.rj</groupId>
			<artifactId>org.eclipse.statet.rj.servi</artifactId>
			<version>4.2.0-SNAPSHOT</version>
		</dependency>
		
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-client</artifactId>
			<scope>test</scope>
		</dependency>
		
	</dependencies>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<systemPropertyVariables>
						<org.eclipse.statet.rj.context.BundleResolvers>RefClass</org.eclipse.statet.rj.context.BundleResolvers>
					</systemPropertyVariables>
				</configuration>
			</plugin>
			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<descriptors>
						<descriptor>src/assembly/distr-bin.xml</descriptor>
					</descriptors>
					<finalName>statet-rhelpserver-incubation-${statet.version}-${statet.build.id}</finalName>
					<appendAssemblyId>false</appendAssemblyId>
				</configuration>
				<executions>
					<execution>
						<id>distr-bin</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
	
</project>
