<?xml version="1.0" encoding="UTF-8"?>

<!--
  Copyright 2005-2006 The Apache Software Foundation
  
  Licensed 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 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>incubator-activemq</groupId>
    <artifactId>activemq-parent</artifactId>
    <version>fuse-4.1.0.11</version>
  </parent>

  <artifactId>activemq-core</artifactId>
  <name>ActiveMQ :: Core</name>
  <description>The ActiveMQ Message Broker and Client implementations</description>

  <dependencies>

    <!-- =============================== -->
    <!-- Required Dependencies -->
    <!-- =============================== -->
    <dependency>
      <groupId>backport-util-concurrent</groupId>
      <artifactId>backport-util-concurrent</artifactId>
      <optional>false</optional>
    </dependency>

    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <optional>false</optional>
    </dependency>

    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>activeio-core</artifactId>
      <optional>false</optional>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jms_1.1_spec</artifactId>
      <optional>false</optional>
    </dependency>

    <!-- =============================== -->
    <!-- Optional Dependencies -->
    <!-- =============================== -->
    <dependency>
      <groupId>incubator-activemq</groupId>
      <artifactId>activemq-jaas</artifactId>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jta_1.0.1B_spec</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-j2ee-management_1.0_spec</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-j2ee-jacc_1.0_spec</artifactId>
      <optional>true</optional>
    </dependency>

    <!-- commons -->
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-primitives</groupId>
      <artifactId>commons-primitives</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-pool</groupId>
      <artifactId>commons-pool</artifactId>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derby</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>axion</groupId>
      <artifactId>axion</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>regexp</groupId>
      <artifactId>regexp</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>activemq</groupId>
      <artifactId>jmdns</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>activemq</groupId>
      <artifactId>smack</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>activemq</groupId>
      <artifactId>smackx</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>xmlbeans</groupId>
      <artifactId>xbean</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>xmlbeans</groupId>
      <artifactId>xmlpublic</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>xmlbeans</groupId>
      <artifactId>xbean_xpath</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>stax</groupId>
      <artifactId>stax-api</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>stax</groupId>
      <artifactId>stax</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
      <exclusions>
        <exclusion>
          <groupId>xmlbeans</groupId>
          <artifactId>xmlbeans-jsr173-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>xalan</groupId>
      <artifactId>xalan</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>activesoap</groupId>
      <artifactId>jaxp-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-spring</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>

    <plugins>

      <!-- Configure which tests are included/excuded -->
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <forkMode>pertest</forkMode>
          <childDelegation>false</childDelegation>
          <useFile>true</useFile>
          <argLine>-Xmx512M</argLine>
          <includes>
            <include>**/*Test.*</include>
          </includes>
          <excludes>

            <!-- These tests run too slow to execute as part of the unit tests -->
            <exclude>**/DefaultStoreBrokerTest.*</exclude>
            <exclude>**/TcpTransportBrokerTest.*</exclude>
            <exclude>**/activeio/*</exclude>

            <!-- These are performance tests so take too long to run -->
            <exclude>**/perf/*</exclude>

            <!-- http://jira.activemq.org/jira/browse/AMQ-522 -->
            <exclude>**/ProxyConnectorTest.*</exclude>

            <!-- http://jira.activemq.org/jira/browse/AMQ-594 -->
            <exclude>**/SimpleNetworkTest.*</exclude>

            <!-- http://jira.activemq.org/jira/browse/AMQ-583 -->
            <exclude>**/DiscoveryTransportBrokerTest.*</exclude>

            <!-- http://jira.activemq.org/jira/browse/AMQ-610 -->
            <exclude>**/FanoutTransportBrokerTest.*</exclude>

            <!-- http://jira.activemq.org/jira/browse/AMQ-626 -->
            <exclude>**/MultipleTestsWithSpringFactoryBeanTest.*</exclude>
            <exclude>**/MultipleTestsWithXBeanFactoryBeanTest.*</exclude>
            <exclude>**/MultipleTestsWithSpringXBeanFactoryBeanTest.*</exclude>

            <!--  these seem to fail only in m2 -->
            <exclude>**/QueueMasterSlaveTest.*</exclude>
            <exclude>**/TopicMasterSlaveTest.*</exclude>
            <exclude>**/TransactedTopicMasterSlaveTest.*</exclude>

            <!-- Kaha in flux - removing tests -->
            <exclude>**/KahaXARecoveryBrokerTest.*</exclude>
            <exclude>**/KahaRecoveryBrokerTest.*</exclude>

            <!-- Multicast and UDP based tests fail on GBuild -->
            <exclude>**/PeerTransportTest.*</exclude>
            <exclude>**/MulticastTransportTest.*</exclude>
            <exclude>**/MulticastNetworkTest.*</exclude>
            <exclude>**/UnreliableUdpTransportTest.*</exclude>
            <exclude>**/SslTransportBrokerTest.*</exclude>

            <!-- this one is a little flaky and can fail on some platforms randomly -->
            <exclude>**/QuickJournalRecoveryBrokerTest.*</exclude>
            <exclude>**/RendezvousDiscoverTransportTest.*</exclude>

            <!-- UDP related tests someimes fail on some platforms -->
            <exclude>**/UdpTransportTest.*</exclude>
            <exclude>**/UdpTransportUsingServerTest.*</exclude>
            <exclude>**/UdpSendReceiveWithTwoConnectionsTest.*</exclude>
            <exclude>**/UdpSendReceiveWithTwoConnectionsAndLargeMessagesTest.*</exclude>

            <!-- http://issues.apache.org/activemq/browse/AMQ-724  -->
            <exclude>**/StompSubscriptionRemoveTest.*</exclude>


            <!-- m2 tests failing since move from assembly  -->
            <exclude>**/TwoBrokerMulticastQueueTest.*</exclude>
            <exclude>**/TwoBrokerMessageNotSentToRemoteWhenNoConsumerTest.*</exclude>
            <exclude>**/TwoBrokerQueueClientsReconnectTest.*</exclude>
            <exclude>**/ThreeBrokerQueueNetworkUsingTcpTest.*</exclude>
            <exclude>**/QueueConsumerCloseAndReconnectTest.*</exclude>
            <exclude>**/ThreeBrokerQueueNetworkTest.*</exclude>
            <exclude>**/ThreeBrokerTopicNetworkTest.*</exclude>
            <exclude>**/ThreeBrokerTopicNetworkUsingTcpTest.*</exclude>

            <!-- TODO move to optional module...  -->
            <exclude>**/TwoBrokerTopicSendReceiveUsingHttpTest.*</exclude>

            <!-- This test only works on machines which have ssh propertly configured -->
            <exclude>**/SSHTunnelNetworkReconnectTest.*</exclude>

          </excludes>
        </configuration>
      </plugin>

      <!-- generate the attached tests jar -->
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Use Gram to Gernerate the OpenWire Marshallers -->
      <!--
        <plugin>
        <groupId>incubator-activemq</groupId>
        <artifactId>maven-gram-plugin</artifactId>
        <version>${pom.version}</version>
        <configuration>
        <scripts>
        GenerateJavaMarshalling.groovy:
        GenerateJavaTests.groovy:
        GenerateCSharpMarshalling.groovy:
        GenerateCSharpClasses.groovy:
        GenerateCppMarshallingClasses.groovy:
        GenerateCppMarshallingHeaders.groovy:
        GenerateCppHeaders.groovy:
        GenerateCppClasses.groovy:
        GenerateCMarshalling.groovy:
        </scripts>
        <groovyProperties>
        <version>1</version>
        </groovyProperties>
        </configuration>
        <dependencies>
        <dependency>
        <groupId>incubator-activemq</groupId>
        <artifactId>activemq-openwire-generator</artifactId>
        <version>${pom.version}</version>
        </dependency>
        </dependencies>
        </plugin>
      -->

      <plugin>
        <groupId>org.apache.xbean</groupId>
        <artifactId>maven-xbean-plugin</artifactId>
        <version>${xbean-version}</version>
        <executions>
          <execution>
            <configuration>
              <namespace>http://activemq.org/config/1.0</namespace>
              <schema>target/activemq.xsd</schema>
            </configuration>
            <goals>
              <goal>mapping</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>javacc-maven-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <configuration>
              <sourceDirectory>${basedir}/src/main/grammar</sourceDirectory>
              <outputDirectory>${basedir}/target/generated-javacc</outputDirectory>
              <packageName>org.apache.activemq.selector</packageName>
            </configuration>
            <goals>
              <goal>javacc</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <profiles>
    <profile>
      <id>jdk1.4</id>
      <activation>
        <jdk>1.4</jdk>
      </activation>
      <dependencies>
        <dependency>
          <groupId>activesoap</groupId>
          <artifactId>jaxp-api</artifactId>
        </dependency>
        <dependency>
          <groupId>mx4j</groupId>
          <artifactId>mx4j</artifactId>
        </dependency>
        <dependency>
          <groupId>mx4j</groupId>
          <artifactId>mx4j-jmx</artifactId>
        </dependency>
        <dependency>
          <groupId>mx4j</groupId>
          <artifactId>mx4j-remote</artifactId>
        </dependency>
        <dependency>
          <groupId>mx4j</groupId>
          <artifactId>mx4j-tools</artifactId>
        </dependency>
        <dependency>
          <groupId>mx4j</groupId>
          <artifactId>mx4j-impl</artifactId>
        </dependency>
      </dependencies>
    </profile>
  </profiles>


</project>
