<?xml version="1.0" encoding="UTF-8"?>
<!--
  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>
   <groupId>org.apache.activemq</groupId>
   <artifactId>artemis-pom</artifactId>
   <packaging>pom</packaging>
   <version>1.1.0</version>

   <parent>
      <groupId>org.apache</groupId>
      <artifactId>apache</artifactId>
      <version>17</version>
      <relativePath>org.apache:apache</relativePath>
   </parent>

   <modules>
      <module>artemis-protocols</module>
      <module>artemis-dto</module>
      <module>artemis-boot</module>
      <module>artemis-web</module>
      <module>artemis-website</module>
      <module>artemis-cli</module>
      <module>artemis-commons</module>
      <module>artemis-selector</module>
      <module>artemis-core-client</module>
      <module>artemis-server</module>
      <module>artemis-jms-client</module>
      <module>artemis-jms-server</module>
      <module>artemis-native</module>
      <module>artemis-journal</module>
      <module>artemis-ra</module>
      <module>artemis-rest</module>
      <module>artemis-service-extensions</module>
      <module>artemis-maven-plugin</module>
      <module>integration/activemq-spring-integration</module>
      <module>integration/activemq-aerogear-integration</module>
      <module>integration/activemq-vertx-integration</module>
      <module>artemis-distribution</module>
      <module>tests</module>
   </modules>

   <name>ActiveMQ Artemis Parent</name>
   <url>http://apache.org/activemq</url>

   <prerequisites>
      <maven>3.0.0</maven>
   </prerequisites>

   <properties>
       <!-- base url for site deployment.  See distribution management for full url.  Override this in settings.xml for staging -->
      <staging.siteURL>scp://people.apache.org/x1/www/activemq.apache.org</staging.siteURL>
      <netty.version>4.0.30.Final</netty.version>
      <jetty.version>9.2.11.v20150529</jetty.version>
      <maven.assembly.plugin.version>2.4</maven.assembly.plugin.version>
      <activemq.version.versionName>${project.version}</activemq.version.versionName>
      <activemq.version.majorVersion>1</activemq.version.majorVersion>
      <activemq.version.minorVersion>0</activemq.version.minorVersion>
      <activemq.version.microVersion>0</activemq.version.microVersion>
      <activemq.version.incrementingVersion>126,125,124,123,122</activemq.version.incrementingVersion>
      <activemq.version.versionTag>${project.version}</activemq.version.versionTag>
      <ActiveMQ-Version>
         ${project.version}(${activemq.version.incrementingVersion})
      </ActiveMQ-Version>
      <resteasy.version>3.0.9.Final</resteasy.version>
      <proton.version>0.10</proton.version>
      <fuse.mqtt.client.version>1.10</fuse.mqtt.client.version>
      <skipUnitTests>true</skipUnitTests>
      <skipJmsTests>true</skipJmsTests>
      <skipExtraTests>true</skipExtraTests>
      <skipIntegrationTests>true</skipIntegrationTests>
      <skipJoramTests>true</skipJoramTests>
      <skipTimingTests>true</skipTimingTests>
      <skipStressTests>true</skipStressTests>
      <skipSoakTests>true</skipSoakTests>
      <skipPerformanceTests>true</skipPerformanceTests>
      <skipConcurrentTests>true</skipConcurrentTests>
      <skipRestTests>true</skipRestTests>
      <skipActiveMQ5Tests>true</skipActiveMQ5Tests>
      <skipExtraTests>true</skipExtraTests>

      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

     <!--

       note for idea users:
       Idea picks up surefire argline by default:
       if You don't want it, you can add -Didea.maven.surefire.disable.argLine=true to idea.vmoptions files,
       see https://intellij-support.jetbrains.com/entries/23395793

       Also see: http://youtrack.jetbrains.com/issue/IDEA-125696


       For profiling add this line and use jmc (Java Mission Control) to evaluate the results:
           -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=delay=30s,duration=120s,filename=/tmp/myrecording.jfr

      -->

      <activemq-surefire-argline>-Djava.util.logging.manager=org.jboss.logmanager.LogManager
         -Dlogging.configuration=file:${activemq.basedir}/tests/config/logging.properties
         -Djava.library.path=${activemq.basedir}/artemis-native/bin/ -Djgroups.bind_addr=localhost -Dorg.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory.localBindAddress=localhost
         -Djava.net.preferIPv4Stack=true
      </activemq-surefire-argline>
      <activemq.basedir>${project.basedir}</activemq.basedir>
      <skipLicenseCheck>true</skipLicenseCheck>
      <skipStyleCheck>true</skipStyleCheck>
      <geronimo.jms.2.spec.version>1.0-alpha-2</geronimo.jms.2.spec.version>

      <javac-compiler-id>javac-with-errorprone</javac-compiler-id>
   </properties>

   <scm>
      <connection>scm:git:http://git-wip-us.apache.org/repos/asf/activemq-artemis.git</connection>
      <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/activemq-artemis.git</developerConnection>
      <url>https://fisheye6.atlassian.com/browse/~br=master/activemq-artemis-git</url>
      <tag>1.1.0</tag>
   </scm>

   <distributionManagement>
      <site>
         <!-- this needs to match a server in your settings.xml with upload settings -->
         <id>activemq-website</id>
         <!-- set the staging.siteURL in your ~/.m2/settings.xml in a release or other profile -->
         <url>${staging.siteURL}/maven/${project.version}</url>
         <!--<url>${site-repo-url}</url>-->
      </site>
      <snapshotRepository>
         <id>apache.snapshots.https</id>
         <name>Apache Development Snapshot Repository</name>
         <url>https://repository.apache.org/content/repositories/snapshots</url>
         <uniqueVersion>false</uniqueVersion>
      </snapshotRepository>
   </distributionManagement>

   <issueManagement>
      <system>JIRA</system>
      <url>https://issues.apache.org/jira/browse/ARTEMIS</url>
   </issueManagement>
   <developers>
       <developer>
           <name>The Apache ActiveMQ Team</name>
           <email>dev@activemq.apache.org</email>
           <url>http://activemq.apache.org</url>
           <organization>Apache Software Foundation</organization>
           <organizationUrl>http://apache.org/</organizationUrl>
       </developer>
   </developers>
    <mailingLists>
        <mailingList>
            <name>User List</name>
            <subscribe>users-subscribe@activemq.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@activemq.apache.org</unsubscribe>
            <post>users@activemq.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Development List</name>
            <subscribe>dev-subscribe@activemq.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@activemq.apache.org</unsubscribe>
            <post>dev@activemq.apache.org</post>
        </mailingList>
    </mailingLists>

   <dependencyManagement>
      <dependencies>
         <!-- ## Test Dependenices ## Note: Junit is required in certain module tests.  We should control versions from here. -->
         <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
            <!-- License: CPL 1.0 -->
            <!-- There are newer versions of the JUnit but they break our tests -->
         </dependency>

         <!-- ### For MQTT Tests && Examples -->
         <dependency>
            <groupId>org.fusesource.mqtt-client</groupId>
            <artifactId>mqtt-client</artifactId>
            <version>${fuse.mqtt.client.version}</version>
            <!-- Apache v2.0 License -->
         </dependency>
         <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>mqtt-client</artifactId>
            <version>0.4.0</version>
            <scope>test</scope>
            <!-- Eclipse Public License - v 1.0 -->
         </dependency>

         <!-- ## End Test Dependencies ## -->

         <!-- ### Build Time Dependencies ### -->
         <!-- This is a build dependency of this project, but is not needed at compile or runtime by other
         projects that depend on this project. This should be in the compiler plugin but can't because of a bug,
         see https://issues.apache.org/jira/browse/MCOMPILER-203-->
         <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging-processor</artifactId>
            <version>2.0.0.Alpha2</version>
            <optional>true</optional>
            <!-- License: LGPL-->
         </dependency>
         <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging-annotations</artifactId>
            <version>2.0.0.Alpha1</version>
            <scope>provided</scope>
            <optional>true</optional>
            <!-- License: Apache 2.0-->
         </dependency>
         <!--needed to compile the logging jar-->
         <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
            <scope>compile</scope>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.1.4.RELEASE</version>
            <scope>compile</scope>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>3.1.4.RELEASE</version>
            <scope>compile</scope>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.1.4.RELEASE</version>
            <scope>compile</scope>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>3.1.4.RELEASE</version>
            <scope>compile</scope>
            <!-- License: Apache 2.0 -->
         </dependency>
         <!-- ### End Build Time Dependencies ### -->

         <!-- ### Run Time Dependencies: MUST NOT INCLUDE CAT X LICENSES ###-->
         <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.1.4.GA</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.jboss.logmanager</groupId>
            <artifactId>jboss-logmanager</artifactId>
            <version>1.5.3.Final</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>net.java.dev.javacc</groupId>
            <artifactId>javacc</artifactId>
            <version>4.0</version>
            <!-- License: BSD -->
         </dependency>
         <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jms_2.0_spec</artifactId>
            <version>${geronimo.jms.2.spec.version}</version>
            <!-- License: Apache 2.0 -->
         </dependency>

         <!-- Required for: JMS Injection -->
         <dependency>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
            <version>1.0-SP4</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <!-- End JMS Injection -->

         <!-- ## Examples Dependencies ## -->
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-ejb_3.0_spec</artifactId>
             <version>1.0.1</version>
             <!-- License: Apache 2.0 -->
	      </dependency>
         <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jta_1.1_spec</artifactId>
            <version>1.1.1</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <!-- ## End Examples Dependencies ## -->

         <!--needed to compile the bootstrap jar-->
         <dependency>
            <groupId>org.jgroups</groupId>
            <artifactId>jgroups</artifactId>
            <version>3.6.0.Final</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>io.airlift</groupId>
            <artifactId>airline</artifactId>
            <version>0.7</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <!--needed to compile transport jar-->
         <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>${netty.version}</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-codec-mqtt</artifactId>
            <version>5.0.0.Alpha2</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.apache.qpid</groupId>
            <artifactId>proton-j</artifactId>
            <version>${proton.version}</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.apache.qpid</groupId>
            <artifactId>proton-jms</artifactId>
            <version>${proton.version}</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-client</artifactId>
            <version>5.12.0</version>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-api</artifactId>
           <version>1.7.5</version>
           <!-- License: MIT -->
         </dependency>

         <!--needed for the rest support-->
         <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>${resteasy.version}</version>
            <exclusions>
               <exclusion>
                  <!-- We exclude this dep as it is GPL licensed.  Instead we include the Geronimo annotations -->
                  <groupId>org.jboss.spec.javax.annotation</groupId>
                  <artifactId>jboss-annotations-api_1.1_spec</artifactId>
               </exclusion>
            </exclusions>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxb-provider</artifactId>
            <version>${resteasy.version}</version>
            <exclusions>
               <exclusion>
                  <!-- We exclude this dep as it is GPL licensed.  Instead we include the Geronimo annotations -->
                  <groupId>org.jboss.spec.javax.annotation</groupId>
                  <artifactId>jboss-annotations-api_1.1_spec</artifactId>
               </exclusion>
            </exclusions>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>${resteasy.version}</version>
            <exclusions>
               <exclusion>
                  <!-- We exclude this dep as it is GPL licensed.  Instead we include the Geronimo annotations -->
                  <groupId>org.jboss.spec.javax.annotation</groupId>
                  <artifactId>jboss-annotations-api_1.1_spec</artifactId>
               </exclusion>
            </exclusions>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-atom-provider</artifactId>
            <version>${resteasy.version}</version>
            <exclusions>
               <exclusion>
                  <!-- We exclude this dep as it is GPL licensed.  Instead we include the Geronimo annotations -->
                  <groupId>org.jboss.spec.javax.annotation</groupId>
                  <artifactId>jboss-annotations-api_1.1_spec</artifactId>
               </exclusion>
            </exclusions>
            <!-- License: Apache 2.0 -->
         </dependency>
         <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>tjws</artifactId>
            <version>${resteasy.version}</version>
            <exclusions>
               <exclusion>
                  <!-- We exclude this dep as it is GPL licensed.  Instead we include the Geronimo annotations -->
                  <groupId>org.jboss.spec.javax.annotation</groupId>
                  <artifactId>jboss-annotations-api_1.1_spec</artifactId>
               </exclusion>
            </exclusions>
            <!-- License: Apache 2.0 -->
         </dependency>

         <!-- Replacement for jboss annotations -->
         <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-annotation_1.1_spec</artifactId>
            <version>1.0.1</version>
            <!-- License: Apache 2.0 -->
         </dependency>

         <!-- ## Jetty web Dependencies ##-->
         <dependency>
            <groupId>org.eclipse.jetty.aggregate</groupId>
            <artifactId>jetty-all</artifactId>
            <version>${jetty.version}</version>
            <!-- License: (Joint): Apache 2.0 & EPL 1.0 -->
        </dependency>
         <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>8.0.23</version>
         </dependency>
        <dependency>
           <groupId>org.jolokia</groupId>
           <artifactId>jolokia-war</artifactId>
           <type>war</type>
           <version>1.3.1</version>
           <!-- License: Apache 2.0 -->
        </dependency>
         <!-- ## End Jetty Wed Dependencies ## -->

         <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-j2ee-connector_1.5_spec</artifactId>
            <version>2.0.0</version>
            <!-- License: Apache 2.0 -->
         </dependency>

         <!-- for URL reflection. Using Populate on URI Factory at activemq-commons -->
         <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.2</version>
            <!-- License: Apache 2.0 -->
         </dependency>

         <!-- needed by commons-beanutils-->
         <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
            <!-- License: Apache 2.0 -->
         </dependency>
      </dependencies>
   </dependencyManagement>

   <profiles>
       <profile>
           <id>M2E</id>
           <activation>
               <property>
                   <name>m2e.version</name>
               </property>
           </activation>
           <properties>
               <javac-compiler-id>javac</javac-compiler-id>
           </properties>
        </profile>
      <profile>
         <id>jdk18</id>
         <activation>
            <jdk>1.8</jdk>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-javadoc-plugin</artifactId>
                  <configuration>
                     <additionalparam>-Xdoclint:none</additionalparam>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>dev</id>
         <modules>
            <module>artemis-boot</module>
            <module>artemis-dto</module>
            <module>artemis-web</module>
            <module>artemis-cli</module>
            <module>artemis-commons</module>
            <module>artemis-selector</module>
            <module>artemis-core-client</module>
            <module>artemis-server</module>
            <module>artemis-jms-client</module>
            <module>artemis-jms-server</module>
            <module>artemis-native</module>
            <module>artemis-protocols</module>
            <module>artemis-journal</module>
            <module>artemis-ra</module>
            <module>artemis-rest</module>
            <module>artemis-service-extensions</module>
            <module>artemis-maven-plugin</module>
            <module>integration/activemq-spring-integration</module>
            <module>integration/activemq-aerogear-integration</module>
            <module>integration/activemq-vertx-integration</module>
            <module>tests</module>
         </modules>
         <properties>
            <skipStyleCheck>false</skipStyleCheck>
            <skipLicenseCheck>false</skipLicenseCheck>
         </properties>
      </profile>
      <profile>
         <id>distro</id>
         <activation>
            <activeByDefault>true</activeByDefault>
         </activation>
      </profile>
      <profile>
         <id>release</id>
         <modules>
            <module>artemis-dto</module>
            <module>artemis-web</module>
            <module>artemis-website</module>
            <module>artemis-cli</module>
            <module>artemis-commons</module>
            <module>artemis-selector</module>
            <module>artemis-core-client</module>
            <module>artemis-server</module>
            <module>artemis-jms-client</module>
            <module>artemis-jms-server</module>
            <module>artemis-native</module>
            <module>artemis-journal</module>
            <module>artemis-ra</module>
            <module>artemis-rest</module>
            <module>artemis-service-extensions</module>
            <module>artemis-maven-plugin</module>
            <module>integration/activemq-spring-integration</module>
            <module>integration/activemq-aerogear-integration</module>
            <module>integration/activemq-vertx-integration</module>
            <module>examples</module>
            <module>tests</module>
            <module>artemis-distribution</module>
         </modules>
         <properties>
            <skipStyleCheck>false</skipStyleCheck>
            <skipLicenseCheck>false</skipLicenseCheck>
         </properties>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-enforcer-plugin</artifactId>
                  <version>1.4</version>
                  <executions>
                     <execution>
                        <id>enforce-java</id>
                        <goals>
                           <goal>enforce</goal>
                        </goals>
                        <configuration>
                           <rules>
                              <!-- we need java8 when building the release -->
                              <requireJavaVersion>
                                 <version>1.8.0</version>
                              </requireJavaVersion>
                           </rules>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <!-- tests is the profile we use to run the entire testsuite
               Running this entire build could take up to 2 hours -->
         <id>tests</id>
         <modules>
            <module>artemis-dto</module>
            <module>artemis-web</module>
            <module>artemis-website</module>
            <module>artemis-cli</module>
            <module>artemis-commons</module>
            <module>artemis-selector</module>
            <module>artemis-core-client</module>
            <module>artemis-server</module>
            <module>artemis-jms-client</module>
            <module>artemis-jms-server</module>
            <module>artemis-native</module>
            <module>artemis-journal</module>
            <module>artemis-ra</module>
            <module>artemis-rest</module>
            <module>artemis-service-extensions</module>
            <module>artemis-maven-plugin</module>
            <module>integration/activemq-spring-integration</module>
            <module>integration/activemq-aerogear-integration</module>
            <module>integration/activemq-vertx-integration</module>
            <module>tests</module>
         </modules>
         <properties>
            <skipUnitTests>false</skipUnitTests>
            <skipJmsTests>false</skipJmsTests>
            <skipJoramTests>false</skipJoramTests>
            <skipIntegrationTests>false</skipIntegrationTests>
            <skipTimingTests>true</skipTimingTests>
            <skipConcurrentTests>false</skipConcurrentTests>
            <skipRestTests>false</skipRestTests>
            <skipStressTests>true</skipStressTests>
            <skipSoakTests>true</skipSoakTests>
            <skipPerformanceTests>true</skipPerformanceTests>
            <skipExtraTests>false</skipExtraTests>
            <skipStyleCheck>false</skipStyleCheck>
            <skipLicenseCheck>false</skipLicenseCheck>
            <skipExtraTests>false</skipExtraTests>
         </properties>
      </profile>
      <profile>
         <!-- This will represent a subset of the tests
              This is used on PR checks on the Jenkins instance at build.apache.org -->
         <id>fast-tests</id>
         <modules>
            <module>artemis-dto</module>
            <module>artemis-web</module>
            <module>artemis-cli</module>
            <module>artemis-commons</module>
            <module>artemis-selector</module>
            <module>artemis-core-client</module>
            <module>artemis-server</module>
            <module>artemis-jms-client</module>
            <module>artemis-jms-server</module>
            <module>artemis-native</module>
            <module>artemis-journal</module>
            <module>artemis-ra</module>
            <module>artemis-rest</module>
            <module>artemis-service-extensions</module>
            <module>artemis-maven-plugin</module>
            <module>integration/activemq-spring-integration</module>
            <module>integration/activemq-aerogear-integration</module>
            <module>integration/activemq-vertx-integration</module>
            <module>tests</module>
         </modules>
         <properties>
            <skipUnitTests>false</skipUnitTests>
            <skipJmsTests>false</skipJmsTests>
            <skipJoramTests>false</skipJoramTests>
            <skipConcurrentTests>false</skipConcurrentTests>
            <skipRestTests>false</skipRestTests>
            <skipExtraTests>true</skipExtraTests>
            <skipStyleCheck>false</skipStyleCheck>
            <skipLicenseCheck>false</skipLicenseCheck>
         </properties>
      </profile>
      <profile>
         <id>examples</id>
         <modules>
            <module>artemis-dto</module>
            <module>artemis-web</module>
            <module>artemis-cli</module>
            <module>artemis-commons</module>
            <module>artemis-selector</module>
            <module>artemis-core-client</module>
            <module>artemis-server</module>
            <module>artemis-jms-client</module>
            <module>artemis-jms-server</module>
            <module>artemis-native</module>
            <module>artemis-journal</module>
            <module>artemis-ra</module>
            <module>artemis-rest</module>
            <module>artemis-service-extensions</module>
            <module>artemis-maven-plugin</module>
            <module>integration/activemq-spring-integration</module>
            <module>integration/activemq-aerogear-integration</module>
            <module>integration/activemq-vertx-integration</module>
            <module>tests</module>
            <module>examples</module>
         </modules>
         <properties>
            <skipTests>true</skipTests>
         </properties>
      </profile>
   </profiles>

   <build>
      <pluginManagement>
         <plugins>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
                  <artifactId>javacc-maven-plugin</artifactId>
               <version>2.6</version>
               <executions>
                  <execution>
                     <id>javacc</id>
                     <goals>
                        <goal>javacc</goal>
                     </goals>
                  </execution>
               </executions>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <!-- version 3.2 is having problems with the APT processor resulting in
                    java.lang.IllegalStateException: endPosTable already set  -->
               <version>3.1</version>
               <!-- Enable Google's Error-Prone https://github.com/google/error-prone -->
               <configuration>
                 <showWarnings>true</showWarnings>
                 <source>1.7</source>
                 <target>1.7</target>
                 <forceJavacCompilerUse>true</forceJavacCompilerUse>
                 <compilerId>${javac-compiler-id}</compilerId>
                 <compilerArgs>
                    <arg>-Xep:NonAtomicVolatileUpdate:ERROR</arg>
                    <arg>-Xep:SynchronizeOnNonFinalField:ERROR</arg>
                    <arg>-Xep:StaticAccessedFromInstance:ERROR</arg>
                    <arg>-Xep:SynchronizeOnNonFinalField:ERROR</arg>
                    <arg>-Xep:WaitNotInLoop:ERROR</arg>
                 </compilerArgs>
               </configuration>
               <dependencies>
                 <dependency>
                   <groupId>org.codehaus.plexus</groupId>
                   <artifactId>plexus-compiler-javac-errorprone</artifactId>
                   <version>2.5</version>
                 </dependency>
               </dependencies>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-clean-plugin</artifactId>
               <version>2.5</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-javadoc-plugin</artifactId>

               <version>2.9</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-rar-plugin</artifactId>
               <version>2.3</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-jar-plugin</artifactId>
               <version>2.4</version>
            </plugin>
            <plugin>
               <groupId>net.sf.maven-sar</groupId>
               <artifactId>maven-sar-plugin</artifactId>
               <version>1.0</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-site-plugin</artifactId>
               <version>3.3</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-shade-plugin</artifactId>
               <version>2.1</version>
            </plugin>
            <plugin>
               <groupId>org.eclipse.jetty</groupId>
               <artifactId>jetty-maven-plugin</artifactId>
               <version>${jetty.version}</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-deploy-plugin</artifactId>
               <version>2.7</version>
            </plugin>

            <plugin>
               <inherited>true</inherited>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-source-plugin</artifactId>
               <version>2.2.1</version>
               <executions>
                  <execution>
                     <id>attach-sources</id>
                     <goals>
                        <goal>jar</goal>
                     </goals>
                  </execution>
               </executions>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>2.18.1</version>
               <configuration>
                  <forkMode>once</forkMode>
                  <testFailureIgnore>true</testFailureIgnore>
                  <runOrder>alphabetical</runOrder>
                  <redirectTestOutputToFile>false</redirectTestOutputToFile>
                  <argLine>${activemq-surefire-argline}</argLine>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-surefire-report-plugin</artifactId>
               <version>2.18.1</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-install-plugin</artifactId>
               <version>2.4</version>
               <configuration>
                  <createChecksum>true</createChecksum>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-pmd-plugin</artifactId>
               <version>3.0.1</version>
               <configuration>
                  <linkXRef>true</linkXRef>
                  <sourceEncoding>utf-8</sourceEncoding>
                  <minimumTokens>100</minimumTokens>
                  <targetJdk>1.5</targetJdk>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>build-helper-maven-plugin</artifactId>
               <version>1.8</version>
            </plugin>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>xml-maven-plugin</artifactId>
               <version>1.0</version>
            </plugin>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>cobertura-maven-plugin</artifactId>
               <configuration />
               <executions>
                  <execution>
                     <goals>
                        <goal>clean</goal>
                     </goals>
                  </execution>
               </executions>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-resources-plugin</artifactId>
               <version>2.6</version>
            </plugin>
            <!-- Many examples use it -->
            <plugin>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-maven-plugin</artifactId>
               <version>${project.version}</version>
            </plugin>
         </plugins>
      </pluginManagement>

      <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-enforcer-plugin</artifactId>
           <version>1.4</version>
           <executions>
             <execution>
               <id>enforce-java</id>
               <goals>
                 <goal>enforce</goal>
               </goals>
               <configuration>
                 <rules>
                   <requireJavaVersion>
                     <version>1.7.0</version>
                   </requireJavaVersion>
                 </rules>
               </configuration>
             </execution>
           </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <configuration>
               <createChecksum>true</createChecksum>
            </configuration>
         </plugin>
         <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
               <execution>
                  <phase>verify</phase>
                  <goals>
                     <goal>jar</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-help-plugin</artifactId>
            <version>2.2</version>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.16</version>
            <dependencies>
               <!-- This was initially done to enforce name on Parameter annotation
                    I've developed a customized check and I needed this jar to deploy the specialized checkstyle -->
               <dependency>
                  <!-- TODO Find a better home -->
                  <groupId>org.hornetq</groupId>
                  <artifactId>hornetq-checkstyle-checks</artifactId>
                  <version>0.2</version>
               </dependency>
            </dependencies>
            <configuration>
               <skip>${skipStyleCheck}</skip>
               <configLocation>${activemq.basedir}/etc/checkstyle.xml</configLocation>
               <suppressionsLocation>${activemq.basedir}/etc/checkstyle-suppressions.xml</suppressionsLocation>
               <failsOnError>false</failsOnError>
               <failOnViolation>true</failOnViolation>
               <consoleOutput>true</consoleOutput>
               <includeTestSourceDirectory>true</includeTestSourceDirectory>
            </configuration>
            <executions>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>check</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>

         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>2.5.2</version>
            <configuration>
               <excludeFilterFile>${user.dir}/etc/findbugs-exclude.xml</excludeFilterFile>
               <findbugsXmlOutput>true</findbugsXmlOutput>
               <xmlOutput>true</xmlOutput>
               <effort>Max</effort>
               <failOnError>false</failOnError>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <version>0.11</version>
            <configuration>
               <reportFile>${activemq.basedir}/ratReport.txt</reportFile>
               <skip>${skipLicenseCheck}</skip>
               <excludes>
                  <exclude>**/*.txt</exclude>
                  <exclude>**/*.md</exclude>
                  <exclude>etc/org.eclipse.*</exclude>
                  <exclude>docs/**/*.json</exclude>
                  <exclude>docs/**/_book/</exclude>
                  <exclude>**/target/</exclude>
                  <exclude>**/META-INF/services/*</exclude>
                  <exclude>**/*.iml</exclude>
                  <exclude>**/*.jceks</exclude>
                  <exclude>**/*.jks</exclude>
                  <exclude>**/org/apache/activemq/artemis/utils/json/**</exclude>
                  <exclude>**/org/apache/activemq/artemis/utils/Base64.java</exclude>
                  <exclude>**/.settings/**</exclude>
                  <exclude>**/.project</exclude>
                  <exclude>**/.classpath</exclude>
                  <exclude>**/.checkstyle</exclude>
                  <exclude>**/.factorypath</exclude>
                  <exclude>ratReport.txt</exclude>
                  <!-- activemq5 unit tests exclude -->
                  <exclude>**/*.data</exclude>
                  <exclude>**/*.bin</exclude>
                  <exclude>**/src/test/resources/keystore</exclude>
                  <exclude>**/*.log</exclude>
                  <exclude>**/*.redo</exclude>
               </excludes>
            </configuration>
            <executions>
               <execution>
                  <phase>compile</phase>
                  <goals>
                     <goal>check</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

   <reporting>
      <plugins>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.5.2</version>
            <configuration>
               <check />
               <formats>
                  <format>html</format>
                  <format>xml</format>
               </formats>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.16</version>
            <configuration>
               <configLocation>${activemq.basedir}/etc/checkstyle.xml</configLocation>
               <failsOnError>false</failsOnError>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>2.5.2</version>
            <configuration>
               <excludeFilterFile>${user.dir}/etc/findbugs-exclude.xml</excludeFilterFile>
               <effort>Max</effort>
               <failOnError>false</failOnError>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9</version>
            <configuration>
               <minmemory>128m</minmemory>
               <maxmemory>1024m</maxmemory>
               <quiet>false</quiet>
               <!-- XXX FIXME 'aggregate' is deprecated -->
               <aggregate>true</aggregate>
               <excludePackageNames>com.restfully.*:org.jboss.resteasy.examples.*:org.jboss.resteasy.tests.*
               </excludePackageNames>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-project-info-reports-plugin</artifactId>
            <version>2.7</version>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>2.14.1</version>
         </plugin>
      </plugins>
   </reporting>
</project>
