<?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-sca</artifactId>
        <version>2.0</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <artifactId>tuscany-itest</artifactId>
    <packaging>pom</packaging>
    <name>Apache Tuscany SCA Integration Tests</name>
    
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
           <groupId>org.codehaus.woodstox</groupId>
           <artifactId>wstx-asl</artifactId>
           <version>3.2.9</version>
           <scope>test</scope>
       </dependency>
    </dependencies>

  <modules>
                <!-- TUSCANY-4029 module>async-services</module  -->
                <module>base</module>
                <module>builder</module>
                <module>bpel</module>
                <module>callback-api</module>
                <module>callback-basic</module>
                <module>callback-complex-type</module>
                <module>callback-multiple-wires</module>
                <module>callback-separatethread</module>
                <module>callback-two-composites</module>
                <module>callback-two-nodes</module>
                <module>component-type</module>
<!-- new test waiting for context discussion to bottom out
                <module>context</module>
-->
                <module>contribution-doc-lit-disablewrapped</module>
                <module>contribution-folder</module>
                <module>contribution-zip</module>
                <module>data-copy</module>
                <module>databindings</module>
                <module>distribution</module>
                <module>domain-node-hazelcast</module>
                <module>exceptions</module>
                <module>implementation-composite</module>
                <module>implementation-spring</module>
                <module>import-export</module>
                <module>interfaces</module>
                <module>interface-matching</module>
                <module>java-lifecycle-exceptions</module>
                <module>jms</module>
                <module>lifecycle</module>
                <module>nodes</module>
                <module>node-launcher-equinox</module>
                <module>oneway</module>
<!-- why commented out?
                <module>operation-overloading</module>
-->
                <module>policy</module>
                <module>policies</module>
                <module>policy-transaction</module>  
                <module>properties</module>
                <module>recursive-multi-level</module>
                <module>references</module>
                <module>scaclient-api</module>
<!-- TUSCANY-3424 - SCAClient in JSE with OSGi runtime not yet supported
                <module>scaclient-api-jse-osgi</module>
-->
                <module>scaclient-api-osgi</module>
                <module>scaclient-api-remote</module>
                <module>scopes</module>
                <module>scdl</module>
                <module>services</module>
                <module>service-reference</module>
                <!-- module>spi</module -->
                <module>wires</module>              
                <module>ws</module>
                <module>ws-jaxws</module>
                <module>async-interactions</module>
                <module>scabindingmapper</module>
  </modules>

  <!-- We don't want to deploy any of the test modules -->
  <properties>
     <maven.deploy.skip>true</maven.deploy.skip>
  </properties>

  <build>
     <plugins>
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-deploy-plugin</artifactId>
           <configuration>
              <skip>true</skip>
           </configuration>
        </plugin>
     </plugins>
  </build>

</project>
