<?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-distribution</artifactId>
        <version>2.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>tuscany-distribution-all</artifactId>
    <name>Apache Tuscany SCA All-in-one Distribution</name>
    <packaging>pom</packaging>

    <repositories>
        <repository>
            <id>java.net2</id>
            <name>java.net Maven 2.x Repository</name>
            <url>http://download.java.net/maven/2</url>
        </repository>
        <repository>
            <id>intalio.org</id>
            <url>http://www.intalio.org/public/maven2</url>
           <releases>
               <enabled>true</enabled>
           </releases>
           <snapshots>
               <enabled>false</enabled>
           </snapshots>
        </repository>     
        <repository>
            <id>openejb-repository</id>
            <name>OpenEJB Repository</name>
            <url>http://svn.apache.org/repos/asf/openejb/repo</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

    <dependencies>

        <!-- module jars for modules directory -->

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-feature-all</artifactId>
            <type>pom</type>
            <version>2.0.1-SNAPSHOT</version>
        </dependency>

        <!-- aggregation jars for lib directory -->

        <dependency>
            <groupId>org.apache.tuscany.sca.aggregation</groupId>
            <artifactId>tuscany-base-runtime-aggregation</artifactId>
            <version>2.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca.aggregation</groupId>
            <artifactId>tuscany-binding-rmi-runtime-aggregation</artifactId>
            <version>2.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca.aggregation</groupId>
            <artifactId>tuscany-binding-ws-runtime-axis2-aggregation</artifactId>
            <version>2.0.1-SNAPSHOT</version>
        </dependency>

    </dependencies>

    <profiles>
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <useDistributionName>false</useDistributionName>
                <generateAggregatedBundle>false</generateAggregatedBundle>
            </properties>
            <build>
                 <plugins>
                     <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-assembly-plugin</artifactId>
                         <version>2.2-beta-3</version>
                         <executions>
                             <execution>
                                 <id>distribution-package</id>
                                 <phase>package</phase>
                                 <goals>
                                     <goal>single</goal>
                                 </goals>
                                 <configuration>
                                     <descriptors>
                                         <descriptor>src/main/assembly/bin-default.xml</descriptor>
                                     </descriptors>
                                     <tarLongFileMode>gnu</tarLongFileMode>
                                     <finalName>apache-tuscany-sca-all-${project.version}</finalName>
                                     <appendAssemblyId>true</appendAssemblyId>
                                     <ignoreDirFormatExtensions>false</ignoreDirFormatExtensions>
                                 </configuration>
                             </execution>
                         </executions>
                     </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>release</id>
            <activation>
                <property>
                   <name>buildZips</name>
                   <value>true</value>
                </property>
            </activation>
            <properties>
                <useDistributionName>false</useDistributionName>
                <generateAggregatedBundle>false</generateAggregatedBundle>
            </properties>
            <build>
                 <plugins>
                     <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-assembly-plugin</artifactId>
                         <version>2.2-beta-5</version>
                         <executions>
                             <execution>
                                 <id>distribution-package</id>
                                 <phase>package</phase>
                                 <goals>
                                     <goal>single</goal>
                                 </goals>
                                 <configuration>
                                     <descriptors>
                                         <descriptor>src/main/assembly/bin-distribution.xml</descriptor>
                                         <descriptor>src/main/assembly/src.xml</descriptor>
                                     </descriptors>
                                     <tarLongFileMode>gnu</tarLongFileMode>
                                     <finalName>apache-tuscany-sca-all-${project.version}</finalName>
                                     <appendAssemblyId>true</appendAssemblyId>
                                     <ignoreDirFormatExtensions>true</ignoreDirFormatExtensions>
                                    <attach>true</attach>
                                 </configuration>
                             </execution>
                         </executions>
                     </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>singlebundle</id>
            <properties>
                <useDistributionName>true</useDistributionName>
                <generateAggregatedBundle>true</generateAggregatedBundle>
            </properties>
       </profile>


    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tuscany.sca</groupId> 
                <artifactId>tuscany-bundle-plugin</artifactId> 
                <version>1.0.8</version>
                <executions>
                    <execution>
                        <id>distribution-modules</id>
                        <phase>generate-resources</phase>
                        <goals>
                             <goal>generate-modules</goal>
                        </goals>
                        <configuration>
                             <targetDirectory>target/modules</targetDirectory>
                             <useDistributionName>${useDistributionName}</useDistributionName>
                             <generateAggregatedBundle>${generateAggregatedBundle}</generateAggregatedBundle>
                             <generateManifestJar>true</generateManifestJar>
                             <featuresName>features</featuresName>
                             <excludeGroupIds>
                                 <groupId>org.apache.tuscany.sca.aggregation</groupId>
                             </excludeGroupIds>
                             <artifactManifests>
                                 <artifactManifest>
                                     <groupId>org.apache.ws.commons.axiom</groupId>
                                     <artifactId>axiom-impl</artifactId>
                                     <version>1.2.10</version>
                                     <manifestFile>${basedir}/manifests/axiom-impl-1.2.10.MF</manifestFile>
                                 </artifactManifest>
                                 <!--
                                 <artifactManifest>
                                     <groupId>org.apache.ws.commons.axiom</groupId>
                                     <artifactId>axiom-api</artifactId>
                                     <version>1.2.10</version>
                                     <manifestFile>${basedir}/manifests/axiom-api-1.2.10.MF</manifestFile>
                                 </artifactManifest>
                                 <artifactManifest>
                                     <groupId>org.apache.woden</groupId>
                                     <artifactId>woden-impl-dom</artifactId>
                                     <version>1.0M8</version>
                                     <manifestFile>${basedir}/manifests/woden-impl-dom-1.0M8.MF</manifestFile>
                                 </artifactManifest>
                                 -->
                                 <!-- artifactAggregations (below) is the right approach to solving the split 
                                      package between axis-kernel and axis2-transport-http however the Tuscany 
                                      runtime doesn't take any notice of it so using a fragment at the moment -->
                                 <artifactManifest>
                                     <groupId>org.apache.axis2</groupId>
                                     <artifactId>axis2-kernel</artifactId>
                                     <version>1.5.3</version>
                                     <manifestFile>${basedir}/manifests/axis2-kernel-1.5.3.MF</manifestFile>
                                 </artifactManifest>
                                 <artifactManifest>
                                     <groupId>org.apache.axis2</groupId>
                                     <artifactId>axis2-transport-http</artifactId>
                                     <version>1.5.3</version>
                                     <manifestFile>${basedir}/manifests/axis2-transport-http-1.5.3.MF</manifestFile>
                                 </artifactManifest>
                                 <artifactManifest>
                                     <groupId>org.apache.axis2</groupId>
                                     <artifactId>*</artifactId>
                                     <version>*</version>
                                 </artifactManifest>
                             </artifactManifests>
                             <!--artifactAggregations>
                                  <artifactAggregation>
                                      <symbolicName>org.apache.tuscany.sca.axis2-kernel</symbolicName>
                                      <version>1.5.3</version>
                                      <artifactMembers>
                                          <artifactMember>
                                              <groupId>org.apache.axis2</groupId>
                                              <artifactId>axis2-kernel</artifactId>
                                              <version>1.5.3</version>
                                          </artifactMember>
                                          <artifactMember>
                                              <groupId>org.apache.axis2</groupId>
                                              <artifactId>axis2-transport-http</artifactId>
                                              <version>1.5.3</version>
                                          </artifactMember>
                                      </artifactMembers>
                                  </artifactAggregation>
                              </artifactAggregations-->
                        </configuration>
                    </execution>
                    <!-- 
                       The following execution must repeat the same set of artifact
                       manifests as the previous one so that the dependency set that 
                       that the executions are working against is the same. 
                    -->
                    <execution>
                        <id>extensions-build</id>
                        <phase>process-resources</phase>
                        <goals>
                             <goal>generate-meta-data</goal>
                        </goals>
                        <configuration>
                             <generateModules>false</generateModules>
                             <useDistributionName>false</useDistributionName>
                             <generateManifestJar>true</generateManifestJar>
                             <generateConfig>false</generateConfig>
                             <generateAntScript>true</generateAntScript> 
                             <generateTargetPlatform>false</generateTargetPlatform>
                             <generateAggregatedBundle>false</generateAggregatedBundle>
                             <featuresName>features</featuresName>
                             <features>
                                 <feature>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-base-runtime-pom</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </feature>
                             </features>
                             <extensions>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-atom-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-commet-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-corba-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-ejb-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-hazelcase-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-jms-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-jsonp-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-rest-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-rmi-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-rss-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>

                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-implementation-bpel-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-implementation-jaxes-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-implementation-osgi-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-implementation-python-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-implementation-script-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-implementation-spring-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-implementation-web-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-implementation-widget-runtime</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>

                                 <extension>
                                     <groupId>org.apache.tuscany.sca</groupId>
                                     <artifactId>tuscany-host-jetty</artifactId>
                                     <version>2.0.1-SNAPSHOT</version>
                                 </extension>
                             </extensions>
                            <artifactManifests>
                                 <artifactManifest>
                                     <groupId>org.apache.ws.commons.axiom</groupId>
                                     <artifactId>axiom-impl</artifactId>
                                     <version>1.2.10</version>
                                     <manifestFile>${basedir}/manifests/axiom-impl-1.2.10.MF</manifestFile>
                                 </artifactManifest>
                                 <!--
                                 <artifactManifest>
                                     <groupId>org.apache.ws.commons.axiom</groupId>
                                     <artifactId>axiom-api</artifactId>
                                     <version>1.2.10</version>
                                     <manifestFile>${basedir}/manifests/axiom-api-1.2.10.MF</manifestFile>
                                 </artifactManifest>          
                                 <artifactManifest>
                                     <groupId>org.apache.woden</groupId>
                                     <artifactId>woden-impl-dom</artifactId>
                                     <version>1.0M8</version>
                                     <manifestFile>${basedir}/manifests/woden-impl-dom-1.0M8.MF</manifestFile>
                                 </artifactManifest>
                                 -->
                                 <artifactManifest>
                                     <groupId>org.apache.axis2</groupId>
                                     <artifactId>axis2-kernel</artifactId>
                                     <version>1.5.3</version>
                                     <manifestFile>${basedir}/manifests/axis2-kernel-1.5.3.MF</manifestFile>
                                 </artifactManifest>
                                 <artifactManifest>
                                     <groupId>org.apache.axis2</groupId>
                                     <artifactId>axis2-transport-http</artifactId>
                                     <version>1.5.3</version>
                                     <manifestFile>${basedir}/manifests/axis2-transport-http-1.5.3.MF</manifestFile>
                                 </artifactManifest>
                                 <artifactManifest>
                                     <groupId>org.apache.axis2</groupId>
                                     <artifactId>*</artifactId>
                                     <version>*</version>
                                 </artifactManifest>
                             </artifactManifests>
                        </configuration>
                    </execution>

<!--
                    <execution>
                        <id>distribution-singlebundle</id>
                        <phase>process-resources</phase>
                        <goals>
                             <goal>aggregate-modules</goal>
                        </goals>
                    </execution>
-->
                </executions>
                <dependencies>
                   <dependency>
                      <groupId>org.eclipse</groupId>
                      <artifactId>osgi</artifactId>
                      <version>3.3.0-v20070530</version>
                   </dependency>
                </dependencies>
            </plugin>
            <!--plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>distribution-package</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors>
                                <descriptor>src/main/assembly/bin.xml</descriptor>
                                <descriptor>src/main/assembly/src.xml</descriptor>
                            </descriptors>
                            <tarLongFileMode>gnu</tarLongFileMode>
                            <finalName>apache-tuscany-sca-all-${project.version}</finalName>
                            <appendAssemblyId>true</appendAssemblyId>
                            <ignoreDirFormatExtensions>true</ignoreDirFormatExtensions>
                        </configuration>
                    </execution>
                </executions>
            </plugin-->
        </plugins>
    </build>

</project>
