<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <parent>
        <groupId>org.apache.stratos</groupId>
        <artifactId>stratos-parent</artifactId>
        <version>4.1.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>stratos-features-parent</artifactId>
    <packaging>pom</packaging>
    <name>Apache Stratos - Features Aggregator Module</name>
    <url>http://apache.org</url>

    <modules>
        <!-- Load Balancer -->
        <module>load-balancer</module>
        <!-- Auto-Scaler -->
        <module>autoscaler</module>
        <!-- Coud Controller -->
        <module>cloud-controller</module>
        <!-- Manager -->
        <module>manager</module>
        <!-- Messaging -->
        <module>messaging</module>
        <module>common</module>
    </modules>

    <build>
        <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-resources-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <properties>
        <wso2carbon.version>4.2.0</wso2carbon.version>
	<!--carbon.patch.version.4.1.1>4.1.1</carbon.patch.version.4.1.1-->
	<carbon.p2.plugin.version>1.5.3</carbon.p2.plugin.version>
	<synapse.wso2.version>2.1.1-wso2v4</synapse.wso2.version>        
	<google.guava.wso2.version>12.0.0.wso2v1</google.guava.wso2.version>
	<google.guice.wso2.version>3.0.wso2v1</google.guice.wso2.version>
	<com.google.guice.assistedinject.wso2.version>3.0.wso2v1</com.google.guice.assistedinject.wso2.version>
	<com.google.guice.assistedinject.wso2.version>3.0.wso2v1</com.google.guice.assistedinject.wso2.version>
	<sun.jersey.version>1.12</sun.jersey.version>
	<gson2.version>2.2</gson2.version>
	<google.collect.osgi.version>1.0.0.wso2v2</google.collect.osgi.version>
	<axis2.wso2.version>1.6.1.wso2v10</axis2.wso2.version>
	<axiom.wso2.version>1.2.11.wso2v4</axiom.wso2.version>
    </properties>

</project>
