<?xml version="1.0" encoding="UTF-8"?>
<!--


    Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>

    ====================================================================
    Licensed 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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>jclouds-project</artifactId>
        <groupId>org.jclouds</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../project/pom.xml</relativePath>
    </parent>
    <groupId>org.jclouds.api</groupId>
    <artifactId>jclouds-apis-project</artifactId>
    <packaging>pom</packaging>
    <name>jclouds apis project</name>
    <modules>
       <module>filesystem</module>
       <module>byon</module>
       <module>s3</module>
       <module>ec2</module>
       <module>deltacloud</module>
       <module>walrus</module>
       <module>eucalyptus</module>
       <module>swift</module>
       <module>cloudfiles</module>
       <module>cloudservers</module>
       <module>vcloud</module>
       <module>vcloudexpress</module>
       <module>elasticstack</module>
       <module>atmos</module>
       <module>nova</module>
    </modules>
</project>
