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

    Copyright (c) 2010-2018 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

-->
<!-- Copyright (c) 2010-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.rt</groupId>
    <artifactId>org.eclipse.scout.rt</artifactId>
    <version>11.0.0-alpha.8</version>
    <relativePath>../org.eclipse.scout.rt</relativePath>
  </parent>

  <artifactId>org.eclipse.scout.rt.mom.jms.test</artifactId>
  <packaging>jar</packaging>
  <name>${project.groupId}:${project.artifactId}</name>

  <properties>
    <master_test_timeout>600</master_test_timeout> <!-- TODO rst For some unknown reason, tests on ci.eclipse last longer (2x) since version 9.0 -->
  </properties>

  <dependencies>
    <!-- Build Dependencies -->
    <dependency>
      <groupId>org.eclipse.scout.rt</groupId>
      <artifactId>org.eclipse.scout.rt.mom.jms</artifactId>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
      <groupId>org.eclipse.scout.rt</groupId>
      <artifactId>org.eclipse.scout.rt.platform.test</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- Jackson used to execute tests using JSON-serialization -->
    <dependency>
      <groupId>org.eclipse.scout.rt</groupId>
      <artifactId>org.eclipse.scout.rt.jackson.test</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-broker</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.apache.activemq</groupId>
          <artifactId>activemq-openwire-legacy</artifactId>
        </exclusion>
        <exclusion>
          <!-- to be able to run tests with artemis we require geronimo-jms_2.0_spec -->
          <groupId>org.apache.geronimo.specs</groupId>
          <artifactId>geronimo-jms_1.1_spec</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>artemis-jms-client</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>artemis-jms-server</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <excludedGroups>${scout.excludeTestCategories}</excludedGroups>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>
