<!--
  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.29.0</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-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>activemq-artemis-native</artifactId>
         <version>${activemq-artemis-native-version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-service-extensions</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-unit-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.groovy</groupId>
         <artifactId>groovy-all</artifactId>
         <version>${groovy.version}</version>
         <type>pom</type>
         <exclusions>
            <exclusion>
               <groupId>org.apache.groovy</groupId>
               <artifactId>groovy-test-junit5</artifactId>
            </exclusion>
         </exclusions>
      </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>
            <exclusion>
               <groupId>org.apache.geronimo.specs</groupId>
               <artifactId>geronimo-j2ee-management_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>jakarta.resource</groupId>
         <artifactId>jakarta.resource-api</artifactId>
      </dependency>
      <dependency>
         <groupId>jakarta.transaction</groupId>
         <artifactId>jakarta.transaction-api</artifactId>
      </dependency>
      <dependency>
         <groupId>jakarta.jms</groupId>
         <artifactId>jakarta.jms-api</artifactId>
      </dependency>
      <dependency>
         <groupId>jakarta.management.j2ee</groupId>
         <artifactId>jakarta.management.j2ee-api</artifactId>
      </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.apache.qpid</groupId>
         <artifactId>qpid-jms-client</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.qpid</groupId>
         <artifactId>proton-j</artifactId>
      </dependency>
      <!-- logging -->
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-slf4j-impl</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.jboss.marshalling</groupId>
         <artifactId>jboss-marshalling-river</artifactId>
         <version>2.0.9.Final</version>
      </dependency>

      <!-- The johnzon-core and json-api contents are repackaged in -commons,
           However maven can still need them during tests, which run against
           the original -commons classes when built+run in the same reactor,
           and not the jar containing the shaded bits. -->
      <dependency>
         <groupId>org.apache.johnzon</groupId>
         <artifactId>johnzon-core</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>jakarta.json</groupId>
         <artifactId>jakarta.json-api</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <testResources>
         <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
         </testResource>
      </testResources>
      <plugins>
         <plugin>
            <groupId>org.apache.activemq</groupId>
            <artifactId>artemis-maven-plugin</artifactId>
            <version>${project.version}</version>
            <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.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq:artemis-unit-test-support:${project.version}</arg>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-SNAPSHOT.cp</file>
                  </configuration>
               </execution><!-- The executions of dependency-scan will calculate dependencies for each specific version used here on this testsuite. -->
               <execution>
                  <id>jakartaee</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-core-client:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-commons:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-selector:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-server:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-journal:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:${project.version}</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>jakarta.jms:jakarta.jms-api:3.0.0</arg>
                        <arg>jakarta.json:jakarta.json-api:2.0.0</arg>
                        <arg>jakarta.transaction:jakarta.transaction-api:2.0.0</arg>
                        <arg>org.apache.activemq:artemis-jakarta-server:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-jakarta-client:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-jakarta-service-extensions:${project.version}</arg>
                        <arg>org.apache.activemq:artemis-unit-test-support:${project.version}</arg>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-JAKARTAEE.cp</file>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>263-check</id>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.6.3</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.6.3</arg>
                        <arg>org.apache.activemq:artemis-cli:2.6.3</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.6.3</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.6.3</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.6.3</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-263.cp</file>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>270-check</id>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.7.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.7.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.7.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.7.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.7.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.7.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-270.cp</file>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>2_10_0-check</id>
                  <configuration>
                     <optional>true</optional>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.10.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.10.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.10.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.10.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.10.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.10.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                        <arg>org.jboss.marshalling:jboss-marshalling-river:2.0.9.Final</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-2_10_0.cp</file>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>2_17_0-check</id>
                  <configuration>
                     <optional>true</optional>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.17.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.17.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.17.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.17.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.17.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.17.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                        <arg>org.jboss.marshalling:jboss-marshalling-river:2.0.9.Final</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-2_17_0.cp</file>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>2_18_0-check</id>
                  <configuration>
                     <optional>true</optional>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.18.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.18.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.18.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.18.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.18.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.18.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                        <arg>org.jboss.marshalling:jboss-marshalling-river:2.0.9.Final</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-2_18_0.cp</file>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>2_28_0-check</id>
                  <configuration>
                     <optional>true</optional>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.28.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.28.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.28.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.28.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.28.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-2_28_0.cp</file>
                  </configuration>
               </execution>

               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>2_22_0-check</id>
                  <configuration>
                     <optional>true</optional>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.22.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.22.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.22.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.22.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.22.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.22.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                        <arg>org.jboss.marshalling:jboss-marshalling-river:2.0.9.Final</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-2_22_0.cp</file>
                  </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.apache.qpid:qpid-jms-client:0.26.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-240.cp</file>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>210-check</id>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.1.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.1.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.1.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.1.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.1.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.1.0</arg>
                        <arg>org.apache.qpid:qpid-jms-client:0.22.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-210.cp</file>
                  </configuration>
               </execution>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <id>200-check</id>
                  <configuration>
                     <libListWithDeps>
                        <arg>org.apache.activemq:artemis-jms-server:2.0.0</arg>
                        <arg>org.apache.activemq:artemis-jms-client:2.0.0</arg>
                        <arg>org.apache.activemq:artemis-cli:2.0.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.0.0</arg>
                        <arg>org.apache.activemq:artemis-amqp-protocol:2.0.0</arg>
                        <arg>org.apache.activemq:artemis-hornetq-protocol:2.0.0</arg>
                        <arg>org.apache.qpid:qpid-jms-client:0.20.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-200.cp</file>
                  </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.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-140.cp</file>
                  </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.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                        <arg>org.jboss.marshalling:jboss-marshalling-river:2.0.9.Final</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/ARTEMIS-155.cp</file>
                  </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.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/HORNETQ-235.cp</file>
                  </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.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/HORNETQ-247.cp</file>
                  </configuration>
               </execution>

               <execution>
                  <id>openwire-5.11</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>dependency-scan</goal>
                  </goals>
                  <configuration>
                     <optional>true</optional>
                     <libListWithDeps>
                        <arg>org.apache.activemq:activemq-client:5.11.0</arg>
                        <arg>org.apache.groovy:groovy-all:pom:${groovy.version}</arg>
                     </libListWithDeps>
                     <libList>
                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
                     </libList>
                     <file>${basedir}/target/AMQ_5_11.cp</file>
                  </configuration>
               </execution>
            </executions>
         </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>
