<?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>6.1.0.M2</version>
    <relativePath>../org.eclipse.scout.sdk/pom.xml</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</artifactId>
    </dependency>
    <!-- Test Dependencies -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
  </dependencies>

  <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>
