<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<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/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <parent>
      <groupId>org.apache.activemq.tests</groupId>
      <artifactId>artemis-tests-pom</artifactId>
      <version>2.6.1</version>
   </parent>

   <artifactId>compatibility-tests</artifactId>
   <packaging>jar</packaging>
   <name>ActiveMQ Artemis Compatibility Tests</name>

   <properties>
      <activemq.basedir>${project.basedir}/../..</activemq.basedir>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-server</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
         <type>test-jar</type>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-commons</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
         <type>test-jar</type>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq.tests</groupId>
         <artifactId>unit-tests</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
         <type>test-jar</type>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-core-client</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
         <type>test-jar</type>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-jms-client</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-jms-server</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-ra</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-cli</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-commons</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-spring-integration</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-journal</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-jdbc-store</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-amqp-protocol</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-stomp-protocol</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-openwire-protocol</artifactId>
         <version>${project.version}</version>
         <exclusions>
            <exclusion>
               <groupId>org.apache.geronimo.specs</groupId>
               <artifactId>geronimo-jms_1.1_spec</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-hornetq-protocol</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-core-client</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-server</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-native</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-service-extensions</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq.tests</groupId>
         <artifactId>artemis-test-support</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-features</artifactId>
         <version>${project.version}</version>
         <type>pom</type>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq.rest</groupId>
         <artifactId>artemis-rest</artifactId>
         <version>2.6.1</version>
      </dependency>
      <dependency>
         <groupId>org.codehaus.groovy</groupId>
         <artifactId>groovy-all</artifactId>
         <version>${groovy.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-junit</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>activemq-client</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.apache.geronimo.specs</groupId>
               <artifactId>geronimo-jms_1.1_spec</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-mqtt-protocol</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.fusesource.mqtt-client</groupId>
         <artifactId>mqtt-client</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.geronimo.specs</groupId>
         <artifactId>geronimo-json_1.0_spec</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.geronimo.specs</groupId>
         <artifactId>geronimo-j2ee-connector_1.5_spec</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.geronimo.specs</groupId>
         <artifactId>geronimo-jta_1.1_spec</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.geronimo.specs</groupId>
         <artifactId>geronimo-jms_2.0_spec</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.johnzon</groupId>
         <artifactId>johnzon-core</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-buffer</artifactId>
      </dependency>
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-codec-http</artifactId>
      </dependency>
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-codec-mqtt</artifactId>
         <version>${netty.version}</version>
      </dependency>
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-handler</artifactId>
      </dependency>
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-transport</artifactId>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
      </dependency>
      <dependency>
         <groupId>org.jboss.logging</groupId>
         <artifactId>jboss-logging-processor</artifactId>
         <scope>provided</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.jboss.logging</groupId>
         <artifactId>jboss-logging-annotations</artifactId>
         <scope>provided</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.jboss.logging</groupId>
         <artifactId>jboss-logging</artifactId>
      </dependency>
      <dependency>
         <groupId>org.jboss.logmanager</groupId>
         <artifactId>jboss-logmanager</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.qpid</groupId>
         <artifactId>qpid-jms-client</artifactId>
         <version>${qpid.jms.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.qpid</groupId>
         <artifactId>proton-j</artifactId>
      </dependency>
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>1.7.5</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.marshalling</groupId>
         <artifactId>jboss-marshalling-river</artifactId>
         <version>2.0.2.Final</version>
      </dependency>
   </dependencies>

   <build>
      <testResources>
         <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
         </testResource>
      </testResources>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
               <execution>
                  <phase>test</phase>
                  <goals>
                     <goal>test-jar</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.activemq</groupId>
            <artifactId>artemis-maven-plugin</artifactId>
            <executions>
               <!-- The executions of dependency-scan will calculate dependencies for each specific version used here on this testsuite. -->
               <execution>
                  <id>snapshot-check</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-cli:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-jms-client:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:${project.version}</arg>
                        <arg>org.codehaus.groovy:groovy-all:${groovy.version}</arg>
                    </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <variableName>ARTEMIS-SNAPSHOT</variableName>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>240-check</id>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.4.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.4.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.4.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.4.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.4.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.4.0</arg>
                        <arg>org.codehaus.groovy:groovy-all:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <variableName>ARTEMIS-240</variableName>
                  </configuration>
               </execution>
               <execution>
                  <id>140-check</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:1.4.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:1.4.0</arg>
                        <arg>org.apache.activemq:artemis-cli:1.4.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:1.4.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:1.4.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:1.4.0</arg>
                        <arg>org.codehaus.groovy:groovy-all:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <variableName>ARTEMIS-140</variableName>
                  </configuration>
               </execution>
               <execution>
                  <id>155-check</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:1.5.5</arg>
                        <arg>org.apache.activemq:artemis-jms-client:1.5.5</arg>
                        <arg>org.apache.activemq:artemis-cli:1.5.5</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:1.5.5</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:1.5.5</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:1.5.5</arg>
                        <arg>org.codehaus.groovy:groovy-all:${groovy.version}</arg>
                        <arg>org.jboss.marshalling:jboss-marshalling-river:2.0.2.Final</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <variableName>ARTEMIS-155</variableName>
                  </configuration>
               </execution>
               <execution>
                  <id>hornetq-235</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <configuration>
                     <optional>true</optional>
                     <extraRepositories>
                        <!-- some of the dependencies are not on maven central,
                             and the artemis maven plugin has the capability of using this extra repo -->
                        <arg>https://repository.jboss.org/nexus/content/groups/public</arg>
                     </extraRepositories>
                     <libListWithDeps>
                        <arg>org.hornetq:hornetq-jms-server:2.3.5.Final</arg>
                        <arg>org.codehaus.groovy:groovy-all:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <variableName>HORNETQ-235</variableName>
                  </configuration>
               </execution>
               <execution>
                  <id>hornetq-247</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <configuration>
                     <optional>true</optional>
                     <extraRepositories>
                        <!-- some of the dependencies are not on maven central,
                             and the artemis maven plugin has the capability of using this extra repo -->
                        <arg>https://repository.jboss.org/nexus/content/groups/public</arg>
                     </extraRepositories>
                     <libListWithDeps>
                        <arg>org.hornetq:hornetq-jms-server:2.4.7.Final</arg>
                        <arg>org.codehaus.groovy:groovy-all:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <variableName>HORNETQ-247</variableName>
                  </configuration>
               </execution>
            </executions>
         </plugin>

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <systemProperties>
                  <property>
                     <name>ARTEMIS-SNAPSHOT</name>
                     <value>${ARTEMIS-SNAPSHOT}</value>
                  </property>
                  <property>
                     <name>ARTEMIS-240</name>
                     <value>${ARTEMIS-240}</value>
                  </property>
                  <property>
                     <name>ARTEMIS-155</name>
                     <value>${ARTEMIS-155}</value>
                  </property>
                  <property>
                     <name>ARTEMIS-140</name>
                     <value>${ARTEMIS-140}</value>
                  </property>
                  <property>
                     <name>HORNETQ-235</name>
                     <value>${HORNETQ-235}</value>
                  </property>
                  <property>
                     <name>HORNETQ-247</name>
                     <value>${HORNETQ-247}</value>
                  </property>
               </systemProperties>
               <skipTests>${skipCompatibilityTests}</skipTests>
               <argLine>-Djgroups.bind_addr=::1 ${activemq-surefire-argline}</argLine>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.servicemix.tooling</groupId>
            <artifactId>depends-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
               <execution>
                  <id>generate-depends-file</id>
                  <goals>
                     <goal>generate-depends-file</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

   <distributionManagement>
      <repository>
         <id>jboss-releases-repository</id>
         <name>JBoss Releases Repository</name>
         <url>https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/</url>
      </repository>
      <snapshotRepository>
         <id>jboss-snapshots-repository</id>
         <name>JBoss Snapshots Repository</name>
         <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
      </snapshotRepository>
   </distributionManagement>


</project>
