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

   <artifactId>smoke-tests</artifactId>
   <packaging>jar</packaging>
   <name>Smoke Tests</name>

   <properties>
      <activemq.basedir>${project.basedir}/../../</activemq.basedir>
      <sts-surefire-extra-args />
   </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>
         <!-- this dependency is here to make sure this module is only executed
              after the distribution is created.
              Otherwise it will get here before the build eventually.
              e.g if you use mvn install -T 20 -->
         <groupId>org.apache.activemq</groupId>
         <artifactId>apache-artemis</artifactId>
         <version>${project.version}</version>
         <scope>compile</scope>
         <type>pom</type>
         <exclusions>
            <exclusion>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-jms-client-all</artifactId>
            </exclusion>
            <exclusion>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-jakarta-client-all</artifactId>
            </exclusion>
         </exclusions>
      </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-commons</artifactId>
         <version>${project.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-commons</artifactId>
         <version>${project.version}</version>
         <type>test-jar</type>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-cli</artifactId>
         <version>${project.version}</version>
      </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.apache.qpid</groupId>
         <artifactId>qpid-jms-client</artifactId>
      </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.wildfly.common</groupId>
         <artifactId>wildfly-common</artifactId>
      </dependency>
      <dependency>
         <groupId>org.fusesource.mqtt-client</groupId>
         <artifactId>mqtt-client</artifactId>
      </dependency>
      <dependency>
         <groupId>org.eclipse.paho</groupId>
         <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
      </dependency>
      <dependency>
         <groupId>jakarta.jms</groupId>
         <artifactId>jakarta.jms-api</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>jakarta.management.j2ee</groupId>
         <artifactId>jakarta.management.j2ee-api</artifactId>
         <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.seleniumhq.selenium</groupId>
         <artifactId>selenium-java</artifactId>
         <version>3.141.59</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.testcontainers</groupId>
         <artifactId>selenium</artifactId>
         <version>1.16.2</version>
         <scope>test</scope>
      </dependency>
      <!-- this dependency is needed for CFUtil and other tools from integration-tests -->
      <dependency>
         <groupId>org.apache.activemq.tests</groupId>
         <artifactId>integration-tests</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
         <type>test-jar</type>
      </dependency>
      <!-- quorum tests -->
      <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-recipes</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-client</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-framework</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-test</artifactId>
         <version>${curator.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.zookeeper</groupId>
         <artifactId>zookeeper</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.zookeeper</groupId>
         <artifactId>zookeeper-jute</artifactId>
         <scope>test</scope>
      </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>
      <plugins>
         <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
               <execution>
                  <id>copy-security-resources</id>
                  <phase>validate</phase>
                  <goals>
                     <goal>copy-resources</goal>
                  </goals>
                  <configuration>
                     <outputDirectory>${basedir}/target/test-classes</outputDirectory>
                     <resources>
                        <resource>
                           <directory>../security-resources</directory>
                        </resource>
                     </resources>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
               <compilerArgs>
                  <arg>--add-exports=java.rmi/sun.rmi.server=ALL-UNNAMED</arg>
                  <arg>--add-exports=java.rmi/sun.rmi.transport=ALL-UNNAMED</arg>
               </compilerArgs>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.activemq</groupId>
            <artifactId>artemis-maven-plugin</artifactId>
            <executions>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-create-console</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>false</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/console</instance>
                     <configuration>${basedir}/target/classes/servers/console</configuration>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-create-console-mutual-ssl</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>false</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/console-mutual-ssl</instance>
                     <configuration>${basedir}/target/classes/servers/console-mutual-ssl</configuration>
                     <args>
                        <arg>--http-host</arg>
                        <arg>localhost</arg>
                        <arg>--http-port</arg>
                        <arg>8443</arg>
                        <arg>--ssl-key</arg>
                        <arg>../../test-classes/server-keystore.p12</arg>
                        <arg>--ssl-key-password</arg>
                        <arg>securepass</arg>
                        <arg>--use-client-auth</arg>
                        <arg>--ssl-trust</arg>
                        <arg>../../test-classes/client-ca-truststore.p12</arg>
                        <arg>--ssl-trust-password</arg>
                        <arg>securepass</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create0</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replicated-static0</instance>
                     <configuration>${basedir}/target/classes/servers/replicated-static0</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create1</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replicated-static1</instance>
                     <configuration>${basedir}/target/classes/servers/replicated-static1</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-expire</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/expire</configuration>
                     <javaOptions>-Dartemis.debug.paging.interval=1</javaOptions>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/expire</instance>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-mqtt</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/mqtt</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/mqtt</instance>
                     <configuration>${basedir}/target/classes/servers/mqtt</configuration>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-standard</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/standard</instance>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-dnsswitch</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/dnsswitch</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/dnsswitch</instance>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-dnsswitch2</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/dnsswitch2</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/dnsswitch2</instance>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-dnsswitch-main</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/dnsswitch-replicated-main</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/dnsswitch-replicated-main</instance>
                     <args>
                        <arg>--java-options</arg>
                        <!-- notice these files are only available on dnsswitch, so this is not a copy and paste error
                             where I really meant dnsswitch here -->
                        <arg>-Djdk.net.hosts.file=${basedir}/target/dnsswitch/etc/hosts.conf
                           -Djava.security.properties=${basedir}/target/dnsswitch/etc/zerocache.security
                           -Djava.rmi.server.hostname=localhost
                        </arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-dnsswitch-main-withping</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/dnsswitch-replicated-main-withping</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/dnsswitch-replicated-main-withping</instance>
                     <args>
                        <arg>--java-options</arg>
                        <!-- notice these files are only available on dnsswitch, so this is not a copy and paste error
                             where I really meant dnsswitch here -->
                        <arg>-Djdk.net.hosts.file=${basedir}/target/dnsswitch/etc/hosts.conf
                           -Djava.security.properties=${basedir}/target/dnsswitch/etc/zerocache.security
                           -Djava.rmi.server.hostname=localhost
                        </arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-dnsswitch-backup-withping</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/dnsswitch-replicated-backup-withping
                     </configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/dnsswitch-replicated-backup-withping</instance>
                     <args>
                        <arg>--java-options</arg>
                        <!-- notice these files are only available on dnsswitch, so this is not a copy and paste error
                             where I really meant dnsswitch here -->
                        <arg>-Djdk.net.hosts.file=${basedir}/target/dnsswitch/etc/hosts.conf
                           -Djava.security.properties=${basedir}/target/dnsswitch/etc/zerocache.security
                           -Djava.rmi.server.hostname=localhost
                        </arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-dnsswitch-main-noretrydns</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/dnsswitch-replicated-main-noretrydns
                     </configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/dnsswitch-replicated-main-noretrydns</instance>
                     <args>
                        <arg>--java-options</arg>
                        <!-- notice these files are only available on dnsswitch, so this is not a copy and paste error
                             where I really meant dnsswitch here -->
                        <arg>-Djdk.net.hosts.file=${basedir}/target/dnsswitch/etc/hosts.conf
                           -Djava.security.properties=${basedir}/target/dnsswitch/etc/noretrydns.security
                           -Djava.rmi.server.hostname=localhost
                        </arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-dnsswitch-backup</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/dnsswitch-replicated-backup</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/dnsswitch-replicated-backup</instance>
                     <args>
                        <arg>--java-options</arg>
                        <!-- notice these files are only available on dnsswitch, so this is not a copy and paste error
                             where I really meant dnsswitch here -->
                        <arg>-Djdk.net.hosts.file=${basedir}/target/dnsswitch/etc/hosts.conf
                           -Djava.security.properties=${basedir}/target/dnsswitch/etc/zerocache.security
                           -Djava.rmi.server.hostname=localhost
                        </arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-maxConsumers</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/maxConsumers</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/maxConsumers</instance>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-createJMX</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/jmx</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/jmx</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-createJMX2</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/jmx2</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote=true
                           -Dcom.sun.management.jmxremote.port=11099 -Dcom.sun.management.jmxremote.rmi.port=11098
                           -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
                        </arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-createJMXRBAC</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>false</allowAnonymous>
                     <instance>${basedir}/target/jmx-rbac</instance>
                     <configuration>${basedir}/target/classes/servers/jmx-rbac</configuration>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-createAuditLogging</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/audit-logging</configuration>
                     <noWeb>false</noWeb>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/audit-logging</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <!--<arg>-Djava.rmi.server.hostname=localhost -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005</arg>-->
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-createAuditLogging2</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/audit-logging2</configuration>
                     <noWeb>false</noWeb>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/audit-logging2</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <!--<arg>-Djava.rmi.server.hostname=localhost -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005</arg>-->
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-createAuditLoggingAMQPMutualSSL</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/audit-logging-amqp-mutual-ssl</configuration>
                     <noWeb>false</noWeb>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/audit-logging-amqp-mutual-ssl</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <!--<arg>-Djava.rmi.server.hostname=localhost -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005</arg>-->
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-jmx-failback</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/jmx-failback1</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/jmx-failback1</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-jmx-failback2</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/jmx-failback2</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/jmx-failback2</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <!-- START JmxReplicatedMultipleFailbackTest -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-replicated-failback-master1</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/replicated-failback-master1</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/replicated-failback-master1</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <!-- START ZookeeperPluggableQuorumSinglePairTest -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-zk-replication-primary</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/zkReplicationPrimary</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/zkReplicationPrimary</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-zk-replication-primary-peer-a</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/zkReplicationPrimaryPeerA</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/zkReplicationPrimaryPeerA</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-zk-replication-primary-peer-b</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <configuration>${basedir}/target/classes/servers/zkReplicationPrimaryPeerB</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/zkReplicationPrimaryPeerB</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-zk-replication-backup</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/zkReplicationBackup</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/zkReplicationBackup</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <!-- END ZookeeperPluggableQuorumSinglePairTest -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-replicated-failback-master2</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/replicated-failback-master2</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/replicated-failback-master2</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-replicated-failback-master3</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/replicated-failback-master3</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/replicated-failback-master3</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-replicated-failback-slave1</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/replicated-failback-slave1</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/replicated-failback-slave1</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <!-- END JmxReplicatedMultipleFailbackTest -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-paging</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/paging</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/paging</instance>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                     </args>
                  </configuration>
               </execution>
               <!-- used on TransferTest -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-transfer-1</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/transfer1</instance>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-transfer-2</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <noWeb>true</noWeb>
                     <portOffset>100</portOffset>
                     <instance>${basedir}/target/transfer2</instance>
                  </configuration>
               </execution>
               <!-- used on BrokerConnectionBridgeSecurityTest  -->
               <execution>
                  <phase>test-compile</phase>
                  <id>createBrokerConnectBridgeSecurityA</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>false</allowAnonymous>
                     <user>A</user>
                     <password>A</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/brokerConnect/bridgeSecurityA</instance>
                     <configuration>${basedir}/target/classes/servers/brokerConnect/bridgeSecurityA</configuration>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>createBrokerConnectBridgeSecurityB</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>false</allowAnonymous>
                     <user>B</user>
                     <password>B</password>
                     <noWeb>true</noWeb>
                     <portOffset>100</portOffset>
                     <instance>${basedir}/target/brokerConnect/bridgeSecurityB</instance>
                     <configuration>${basedir}/target/classes/servers/brokerConnect/bridgeSecurityB</configuration>
                  </configuration>
               </execution>
               <!-- used on BrokerConnectionBridgeSecurityTest  -->
               <execution>
                  <phase>test-compile</phase>
                  <id>createBrokerConnectMirrorSecurityA</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>false</allowAnonymous>
                     <user>A</user>
                     <password>A</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/brokerConnect/mirrorSecurityA</instance>
                     <configuration>${basedir}/target/classes/servers/brokerConnect/mirrorSecurityA</configuration>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>createBrokerConnectMirrorSecurityB</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>false</allowAnonymous>
                     <user>B</user>
                     <password>B</password>
                     <noWeb>true</noWeb>
                     <portOffset>1</portOffset>
                     <instance>${basedir}/target/brokerConnect/mirrorSecurityB</instance>
                     <configuration>${basedir}/target/classes/servers/brokerConnect/mirrorSecurityB</configuration>
                  </configuration>
               </execution>

               <!-- used on MaxQueueResourceTest  -->
               <execution>
                  <phase>test-compile</phase>
                  <id>createBrokerMaxQueueResourceTest</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>false</allowAnonymous>
                     <user>A</user>
                     <password>A</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/MaxQueueResourceTest</instance>
                     <configuration>${basedir}/target/classes/servers/MaxQueueResourceTest</configuration>
                  </configuration>
               </execution>

               <!-- used on InfiniteRedeliverySmokeTest  -->
               <execution>
                  <phase>test-compile</phase>
                  <id>createBrokerInfiniteRedelivery</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>A</user>
                     <password>A</password>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/infinite-redelivery</instance>
                     <configuration>${basedir}/target/classes/servers/infinite-redelivery</configuration>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-mmfactory</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/mmfactory</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/mmfactory</instance>
                     <noWeb>false</noWeb>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote=true
                           -Dcom.sun.management.jmxremote.port=11099 -Dcom.sun.management.jmxremote.rmi.port=11098
                           -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
                        </arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-brokerConnection-paged-serverA</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/brokerConnect/pagedA</instance>
                     <configuration>${basedir}/target/classes/servers/brokerConnect/pagedA</configuration>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-brokerConnection-paged-serverB</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/brokerConnect/pagedB</instance>
                     <configuration>${basedir}/target/classes/servers/brokerConnect/pagedB</configuration>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-bridge-transfer-A</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/bridgeTransfer/serverA</instance>
                     <configuration>${basedir}/target/classes/servers/bridgeTransfer/serverA</configuration>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-bridge-transfer-B</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/bridgeTransfer/serverB</instance>
                     <configuration>${basedir}/target/classes/servers/bridgeTransfer/serverB</configuration>
                  </configuration>
               </execution>
               <!-- Used on TestRetention -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-replay</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/replay/replay</instance>
                     <configuration>${basedir}/target/classes/servers/replay/replay</configuration>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--journal-retention</arg>
                        <arg>1</arg>
                        <arg>--queues</arg>
                        <arg>RetentionTest</arg>
                        <arg>--name</arg>
                        <arg>replay</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-create-nettynative</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>false</allowAnonymous>
                     <noWeb>true</noWeb>
                     <instance>${basedir}/target/nettynative</instance>
                     <configuration>${basedir}/target/classes/servers/nettynative</configuration>
                  </configuration>
               </execution>
            </executions>
            <dependencies>
               <dependency>
                  <groupId>org.apache.activemq.tests</groupId>
                  <artifactId>smoke-tests</artifactId>
                  <version>${project.version}</version>
               </dependency>
            </dependencies>
         </plugin>
         <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.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <skipTests>${skipSmokeTests}</skipTests>
               <argLine>${sts-surefire-extra-args} ${activemq-surefire-argline}</argLine>
            </configuration>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>jdk16on</id>
         <activation>
            <jdk>[16,)</jdk>
         </activation>
         <properties>
            <sts-surefire-extra-args>--add-opens=java.management.rmi/javax.management.remote.rmi=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.server=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED</sts-surefire-extra-args>
         </properties>
      </profile>
   </profiles>

</project>