<?xml version="1.0"?>
<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.basyx</groupId>
    <artifactId>basyx.components.docker</artifactId>
    <version>0.1.0-SNAPSHOT</version>
  </parent>
  
  <artifactId>basyx.components.AASServer</artifactId>
  <name>AAS Server</name>
  
  	<properties>
		<!--  
			basyx.components.executable is the executable class with the definition of the public void main(String[]).
			It is needed when building the jar in the maven-jar-plugin (see basyx.components.docker/pom.xml) 
		-->
		<basyx.components.executable>org.eclipse.basyx.components.aas.executable.AASServerExecutable</basyx.components.executable>
	</properties>
  
	<packaging>jar</packaging>
	
	<!-- Define additional plugins that are not included by default -->
	<!-- Plugin configuration is done in parent project(s) -->
	<build>
		<plugins>
			<!-- Attach sources to jar file -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
	
	<dependencies>
		<!-- Use MongoDB Java Drivers for db connections -->
	    <dependency>
	        <groupId>org.mongodb</groupId>
	        <artifactId>mongodb-driver-sync</artifactId>
	        <version>4.0.5</version>
	    </dependency>

		<!-- Use Spring Data MongoDB for db data management -->		
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-mongodb</artifactId>
			<version>3.0.1.RELEASE</version>
		</dependency>
		
		<!-- Adds additional classes of the BaSys SDK for tests -->
		<dependency>
			<groupId>org.eclipse.basyx</groupId>
			<artifactId>basyx.sdk</artifactId>
			<classifier>tests</classifier>
		</dependency>
	</dependencies>
	
	<profiles>
		<profile>
			<!-- 
				"Docker" profile - do not build & install docker images by default
				Run "mvn install -Pdocker" in order to include docker  
			-->
			<id>docker</id>
			<build>
				<plugins>
					<!-- Read maven properties from file -->
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>properties-maven-plugin</artifactId>
					</plugin>
				
					<!-- Copy the dependencies necessary to run the jar -->
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-dependency-plugin</artifactId>
					</plugin>
				
					<!-- Build the docker image -->
					<plugin>
						<groupId>com.spotify</groupId>
						<artifactId>dockerfile-maven-plugin</artifactId>
					</plugin>
				
					<!-- Create integration test environment -->
					<plugin>
						<groupId>com.dkanejs.maven.plugins</groupId>
						<artifactId>docker-compose-maven-plugin</artifactId>
					</plugin>
					
					<!-- Run integration tests -->
					<plugin>    
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-failsafe-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
