<?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>
    <!--
       The pom-distribution.xml file in this directory is a modified version
       of this pom.xml file and is used as the pom.xml for the samples
       directory of the binary distribution.  Any updates to this pom.xml
       file must be applied to pom-distribution.xml to keep the two files
       in sync (except where marked).
       
       The samples directory of the binary distribution needs to contain
       a pom.xml so that users can run "mvn eclipse:eclipse" to generate
       Eclipse project files for all the samples.  We can't just copy the
       samples pom.xml from the svn source tree to the binary distribution
       because there are 10 samples in the svn source tree (and the source
       distribution) that aren't included in the binary distribution.  This
       mismatch is being tracked as issue TUSCANY-3678 and it should be
       possible to remove pom-distribution.xml when this issue is fixed.
    -->
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.tuscany.sca</groupId>
        <artifactId>tuscany-sca</artifactId>
        <version>1.7-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>tuscany-samples</artifactId>
    <packaging>pom</packaging>
    <name>Apache Tuscany SCA Samples</name>

    <repositories>
        <repository>
            <id>apache.incubator</id>
            <url>http://people.apache.org/repo/m2-incubating-repository</url>
        </repository>
    </repositories>

    <profiles>
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <modules>
                <module>binding-echo</module>
                <module>binding-echo-extension</module>
                <module>binding-notification-broker</module>
                <module>binding-notification-consumer</module>
                <module>binding-notification-producer</module>
                <module>calculator</module>
                <module>calculator-corba-reference</module>
                <module>calculator-corba-service</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>calculator-lean</module>
                <module>calculator-distributed</module>
                <module>calculator-implementation-policies</module>
                <module>calculator-rmi-reference</module>
                <module>calculator-rmi-service</module>
                <module>calculator-script</module>
                <module>calculator-webapp</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>calculator-ws-secure-webapp</module>
                <module>calculator-ws-webapp</module>
                <module>callback-ws-client</module>
                <module>callback-ws-service</module>
                <module>callbacks-jms</module>
                <module>chat-webapp</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>customer-dojo</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>customer-dojo-webapp</module>
                <module>databinding-echo</module>
                <!--module>domain-webapp</module-->
                <module>domain-management</module>
                <module>feed-aggregator</module>
                <module>feed-aggregator-webapp</module>
                <module>helloworld-bpel</module>
                <module>helloworld-dojo-webapp</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>helloworld-erlang-reference</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>helloworld-erlang-service</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>helloworld-jms-webapp</module>
                <module>helloworld-jsonrpc-webapp</module>
                <module>helloworld-reference-jms</module>
                <module>helloworld-service-jms</module>
                <module>helloworld-ws-service</module>
                <module>helloworld-ws-service-jms</module>
                <module>helloworld-ws-service-secure</module>
                <module>helloworld-ws-reference</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>helloworld-ws-reference-lean</module>
                <module>helloworld-ws-reference-jms</module>
                <module>helloworld-ws-reference-secure</module>
                <module>helloworld-ws-sdo</module>
                <module>helloworld-ws-sdo-webapp</module>
                <module>holder-ws-service</module>
                <module>implementation-composite</module>
                <module>implementation-crud</module>
                <module>implementation-crud-extension</module>
                <module>implementation-notification</module>
                <module>implementation-pojo-extension</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>loanapplication</module>
                <module>osgi-supplychain</module>
                <module>photo-gallery</module>
                <module>quote-xquery</module>
                <module>simple-bigbank</module>
                <module>simple-bigbank-spring</module>
                <module>spring-bigbank-checkaccount</module>
                <module>spring-bigbank-calculator</module>
                <module>spring-bigbank-stockquote</module>
                <module>simple-callback</module>
                <module>simple-callback-ws</module>
                <module>store</module>
                <!-- the following is excluded from pom-distribution.xml -->
                <module>store-dojo</module>
                <module>store-webapp</module>
                <module>store-secure</module>
                <module>store-distributed</module>
                <module>supplychain</module>
                <module>web-resource</module>
                <module>zipcode-jaxws</module>
            </modules>
        </profile>
    </profiles>
    
</project>
