<?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>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.tuscany.sca</groupId>
        <artifactId>tuscany-itest</artifactId>
        <version>1.7-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <artifactId>itest-jms-selectors</artifactId>
    <name>Apache Tuscany SCA iTest JMS Tests For Selectors</name>

    <repositories>
       <repository>
          <id>apache.incubator</id>
          <url>http://people.apache.org/repo/m2-incubating-repository</url>
       </repository>
    </repositories>

    <dependencies>
        
        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-sca-api</artifactId>
            <version>1.7-SNAPSHOT</version>
        </dependency>        

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-host-embedded</artifactId>
            <version>1.7-SNAPSHOT</version>
            <scope>runtime</scope>
        </dependency> 

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-implementation-java-runtime</artifactId>
            <version>1.7-SNAPSHOT</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-binding-jms-runtime</artifactId>
            <version>1.7-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-host-jms-asf</artifactId>
            <version>1.7-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.5</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-node-impl</artifactId>
            <version>1.7-SNAPSHOT</version>
            <scope>test</scope>
        </dependency>

        <!--  uses ActiveMQ 5.1 as 4.1 Session.createQueue does not work using
              a temporary queue name -->
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>5.1.0</version>
        </dependency>
                
    </dependencies>

    <build>
       <finalName>${artifactId}</finalName>
    </build>
</project>
