<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2015 BSI Business Systems Integration AG.
    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:
        BSI Business Systems Integration AG - 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>
    <groupId>org.eclipse.scout.sdk</groupId>
    <artifactId>org.eclipse.scout.sdk</artifactId>
    <version>10.0.14</version>
    <relativePath>../org.eclipse.scout.sdk</relativePath>
  </parent>

  <artifactId>org.eclipse.scout.sdk.core.test</artifactId>
  <packaging>jar</packaging>
  <name>${project.groupId}:${project.artifactId}</name>

  <dependencies>
    <!-- Build Dependencies -->
    <dependency>
      <groupId>org.eclipse.scout.sdk</groupId>
      <artifactId>org.eclipse.scout.sdk.core.ecj</artifactId>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-launcher</artifactId>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-params</artifactId>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.annotation</groupId>
      <artifactId>jakarta.annotation-api</artifactId>
    </dependency>
  </dependencies>

  <profiles>
    <profile>
      <id>fixture_test_src_folder</id>
      <activation>
        <file>
          <exists>${basedir}/src/test/fixture</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-test-source</id>
                <goals>
                  <goal>add-test-source</goal>
                </goals>
                <phase>generate-sources</phase>
                <configuration>
                  <sources>
                    <source>src/test/fixture</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.scout</groupId>
          <artifactId>eclipse-settings-maven-plugin</artifactId>
          <configuration>
            <additionalConfig>
              <file>
                <name>.settings/.jsdtscope</name>
                <location>/.jsdtscope</location>
              </file>
              <file>
                <name>.settings/com.eclipsesource.jshint.ui.prefs</name>
                <location>/com.eclipsesource.jshint.ui.prefs</location>
              </file>
              <file>
                <name>.settings/de.loskutov.anyedit.AnyEditTools.prefs</name>
                <location>/de.loskutov.anyedit.AnyEditTools.prefs</location>
              </file>
              <file>
                <name>.settings/org.eclipse.core.resources.prefs</name>
                <location>/org.eclipse.core.resources.prefs</location>
              </file>
              <file>
                <name>.settings/org.eclipse.core.runtime.prefs</name>
                <location>/org.eclipse.core.runtime.prefs</location>
              </file>
              <!--
              Do not copy jdt.core.prefs from template because they are different for the test plugin
              <file>
                <name>.settings/org.eclipse.jdt.core.prefs</name>
                <location>/org.eclipse.jdt.core.prefs</location>
              </file>
               -->
              <file>
                <name>.settings/org.eclipse.jdt.ui.prefs</name>
                <location>/org.eclipse.jdt.ui.prefs</location>
              </file>
              <file>
                <name>.settings/org.eclipse.m2e.core.prefs</name>
                <location>/org.eclipse.m2e.core.prefs</location>
              </file>
              <file>
                <name>.settings/org.eclipse.wst.jsdt.core.prefs</name>
                <location>/org.eclipse.wst.jsdt.core.prefs</location>
              </file>
              <file>
                <name>.settings/org.eclipse.wst.jsdt.ui.prefs</name>
                <location>/org.eclipse.wst.jsdt.ui.prefs</location>
              </file>
              <file>
                <name>.settings/org.eclipse.wst.jsdt.ui.superType.container</name>
                <location>/org.eclipse.wst.jsdt.ui.superType.container</location>
              </file>
              <file>
                <name>.settings/org.eclipse.wst.jsdt.ui.superType.name</name>
                <location>/org.eclipse.wst.jsdt.ui.superType.name</location>
              </file>
            </additionalConfig>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
