<?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>
    <!--
       This file is a modified version of the samples/pom.xml file in
       the svn source tree. This file is used as the pom.xml for the
       samples directory in the binary distribution.  Any updates to
       samples/pom.xml in the svn source tree must also be applied to
       samples/pom-distribution.xml to keep these 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 this file when this issue is fixed.
    -->
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.tuscany.sca</groupId>
        <artifactId>tuscany-sca</artifactId>
        <version>1.6.1-SNAPSHOT</version>
    </parent>
    <artifactId>tuscany-samples-distribution</artifactId>
    <packaging>pom</packaging>
    <name>Apache Tuscany SCA Samples in Binary Distribution</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>supplychain</module>
                <module>web-resource</module>
                <!--module>zipcode-jaxws</module-->
            </modules>
        </profile>
    </profiles>
    
</project>
