<?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-Beta1</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>
    </dependencies>

  <modules>
                <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>
                <module>contribution-folder</module>
                <module>contribution-zip</module>
<!-- why commented out?              
                <module>definitions-multiple</module>
-->
                <module>databindings</module>
                <module>distribution</module>
                <module>exceptions</module>
                <module>implementation-spring</module>
                <module>import-export</module>
                <module>interfaces</module>
                <module>jms</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>  
<!-- wait until databinding-sdo is in
                <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>wires</module>              
                <module>ws</module>
                <module>ws-jaxws</module>
                <module>async-interactions</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>
