<?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>8.0.0.004_Photon_RC1</version>
    <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
  </parent>

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

  <properties>
    <master_test_timeout>90</master_test_timeout>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.eclipse.scout.sdk</groupId>
      <artifactId>org.eclipse.scout.sdk.core.s</artifactId>
      <exclusions>
        <exclusion>
          <!-- because a newer version is included in scout.rt.server.jaxws (javax.annotation:javax.annotation-api:1.2) -->
          <!-- otherwise there are duplicate classes on the classpath -->
          <groupId>javax.annotation</groupId>
          <artifactId>jsr250-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk</groupId>
      <artifactId>org.eclipse.scout.sdk.core.test</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.rt</groupId>
      <artifactId>org.eclipse.scout.rt.ui.html.test</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.rt</groupId>
      <artifactId>org.eclipse.scout.rt.server.test</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.rt</groupId>
      <artifactId>org.eclipse.scout.rt.server.jaxws</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>add-source</id>
            <goals>
              <goal>add-source</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <sources>
                <source>src/main/client</source>
                <source>src/main/shared</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
