<!--
  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.31.0</version>
   </parent>

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

   <properties>
      <activemq.basedir>${project.basedir}/../..</activemq.basedir>
      <skipCompatibilityTests>true</skipCompatibilityTests>
   </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.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>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <forkCount>1</forkCount>
               <reuseForks>true</reuseForks>
               <skipTests>${skipCompatibilityTests}</skipTests>
               <argLine>${activemq-surefire-argline}</argLine>
            </configuration>
         </plugin>
      </plugins>
   </build>
   <profiles>
      <profile>
         <id>compatibility-tests</id>
         <properties>
            <skipCompatibilityTests>false</skipCompatibilityTests>
         </properties>
         <build>
            <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>
            </plugins>
         </build>
      </profile>
   </profiles>
   <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>
