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

    <artifactId>tuscany-feature-eclipse-pde</artifactId>
    <name>Apache Tuscany SCA Eclipse PDE Feature</name>
    <packaging>pom</packaging>

    <dependencies>

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

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jsp_2.1_spec</artifactId>
            <version>1.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-el_1.0_spec</artifactId>
            <version>1.0.1</version>
        </dependency>

        <!-- Add the dependency for ActiveMQ as the JMS runtime to use -->
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>5.3.0</version>
            <exclusions>
               <exclusion>
                   <groupId>org.springframework</groupId>
	               <artifactId>spring-context</artifactId>
               </exclusion>
            </exclusions>
        </dependency>
        <!-- end of addition for ActiveMQ -->

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tuscany.maven.plugins</groupId> 
                <artifactId>maven-bundle-plugin</artifactId> 
                <version>1.0.7</version>
                <executions>
                    <execution>
                        <id>distribution-modules</id>
                        <phase>generate-resources</phase>
                        <goals>
                             <goal>generate-modules</goal>
                        </goals>
                        <configuration>
                             <targetDirectory>target/modules</targetDirectory>
                             <useDistributionName>false</useDistributionName>
                             <generateAggregatedBundle>false</generateAggregatedBundle>
                             <generateManifestJar>false</generateManifestJar>
                             <featuresName>features</featuresName>
                             <excludeGroupIds>
                                 <groupId>org.apache.tuscany.sca.aggregation</groupId>
                             </excludeGroupIds>
                             <artifactManifests>
                             <!--
                                 <artifactManifest>
                                     <groupId>org.apache.ws.commons.axiom</groupId>
                                     <artifactId>axiom-api</artifactId>
                                     <version>1.2.10</version>
                                     <manifestFile>${basedir}/../../distribution/all/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}/../../distribution/all/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}/../../distribution/all/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}/../../distribution/all/manifests/axis2-transport-http-1.5.3.MF</manifestFile>
                                 </artifactManifest>
                                 <artifactManifest>
                                     <groupId>org.apache.axis2</groupId>
                                     <artifactId>*</artifactId>
                                     <version>*</version>
                                 </artifactManifest>
                             </artifactManifests>
                        </configuration>
                    </execution>
                </executions>

                <dependencies>
                   <dependency>
                      <groupId>org.eclipse</groupId>
                      <artifactId>osgi</artifactId>
                      <version>3.3.0-v20070530</version>
                   </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>
