<?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>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>4</version>
    </parent>
    <groupId>org.jclouds</groupId>
    <artifactId>jclouds-project</artifactId>
    <version>1.0-beta-9e-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>jclouds Project</name>
    <url>http://www.jclouds.org</url>
    <description>jclouds: Concurrent API for Cloud Services</description>
    <inceptionYear>2009</inceptionYear>

    <licenses>
        <license>
            <name>Apache License</name>
            <url>../resources/LICENSE.txt</url>
        </license>
    </licenses>

    <organization>
        <name>jclouds</name>
        <url>http://www.jclouds.org/</url>
    </organization>

    <issueManagement>
        <system>Google Code</system>
        <url>http://code.google.com/p/jclouds/issues</url>
    </issueManagement>

    <mailingLists>
        <mailingList>
            <name>Contributors</name>
            <subscribe>http://groups.google.com/group/jclouds-contributors</subscribe>
            <unsubscribe>http://groups.google.com/group/jclouds-contributors</unsubscribe>
            <post>jclouds-contributors@googlegroups.com</post>
            <archive>http://groups.google.com/group/jclouds-contributors</archive>
        </mailingList>
        <mailingList>
            <name>Repository Commits</name>
            <subscribe>http://groups.google.com/group/jclouds-commits</subscribe>
            <unsubscribe>http://groups.google.com/group/jclouds-commits</unsubscribe>
            <post>jclouds-commits@googlegroups.com</post>
            <archive>http://groups.google.com/group/jclouds-commits</archive>
        </mailingList>
    </mailingLists>

    <scm>
        <connection>scm:git:git://github.com/jclouds/jclouds.git</connection>
        <developerConnection>scm:git:ssh://git@github.com/jclouds/jclouds.git</developerConnection>
        <url>http://github.com/jclouds/jclouds</url>
    </scm>

    <repositories>
        <repository>
            <id>sonatype-nexus-snapshots</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <distributionManagement>
        <repository>
            <id>sonatype-nexus-staging</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
            <uniqueVersion>false</uniqueVersion>
        </repository>
        <snapshotRepository>
            <id>sonatype-nexus-snapshots</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>    
        <site>
            <id>website</id>
            <name>website</name>
            <url>file://${basedir}/target/dist/site/jclouds-testing/</url>
        </site>
    </distributionManagement>

    <developers>
        <developer>
            <name>Adrian Cole</name>
            <id>ferncam1</id>
            <email>adrian -at- jclouds -dot- org</email>
            <organization>jclouds</organization>
            <roles>
                <role>Java Developer</role>
                <role>PMC</role>
            </roles>
            <url>http://www.jclouds.org</url>
            <timezone>-8</timezone>
        </developer>
        <developer>
            <name>Hugo Duncan</name>
            <id>hugoduncan</id>
            <email>tabcdef -at- hugoduncan -dot- org</email>
            <roles>
                <role>Clojure Developer</role>
            </roles>
            <timezone>-8</timezone>
        </developer>
        <developer>
            <name>Phil Hagelberg</name>
            <id>technomancy</id>
            <email>phil -at- technomancy -dot- us</email>
            <roles>
                <role>Clojure Developer</role>
            </roles>
            <timezone>-8</timezone>
        </developer>
        <developer>
            <name>Ivan Meredith</name>
            <id>barefootnz</id>
            <email>ivan -at- ivan -dot- net -dot- nz</email>
            <roles>
                <role>Java Developer</role>
            </roles>
            <timezone>+13</timezone>
        </developer>
        <developer>
            <name>Andrew Phillips</name>
            <id>demobox</id>
            <email>aphillips -at- qrmedia -dot- com</email>
            <roles>
                <role>Apprentice</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <name>Alex Yarmuda</name>
            <id>alexstaytuned</id>
            <email>oleksiy -dot- yarmula -at- gmail -dot- com</email>
            <roles>
                <role>Java Developer</role>
            </roles>
            <timezone>-8</timezone>
        </developer>
        <developer>
            <name>Chas Emerick</name>
            <id>cemerick</id>
            <email>cemerick -at- snowtide -dot- com</email>
            <roles>
                <role>Clojure Developer</role>
            </roles>
            <timezone>-5</timezone>
        </developer>
    </developers>

    <properties>
        <maven.compile.source>1.6</maven.compile.source>
        <maven.compile.target>1.6</maven.compile.target>
        <maven.compile.optimize>true</maven.compile.optimize>
        <maven.compile.deprecation>true</maven.compile.deprecation>
        <http.proxyHost />
        <http.proxyPort />
        <jclouds.wire.httpstream.url>http://apache.opensourceresources.org/commons/logging/binaries/commons-logging-1.1.1-bin.tar.gz</jclouds.wire.httpstream.url>
        <jclouds.wire.httpstream.md5>e5de09672af9b386c30a311654d8541a</jclouds.wire.httpstream.md5>
        <jclouds.blobstore.httpstream.url>${jclouds.wire.httpstream.url}</jclouds.blobstore.httpstream.url>
        <jclouds.blobstore.httpstream.md5>${jclouds.wire.httpstream.md5}</jclouds.blobstore.httpstream.md5>
        <jclouds.test.listener>org.jclouds.test.testng.UnitTestStatusListener</jclouds.test.listener>
        <test.ssh.keyfile />
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-security</artifactId>
                <version>7.4.0.RC0</version>
            </dependency>
            <dependency>
                <groupId>com.jcraft</groupId>
                <artifactId>jsch</artifactId>
                <version>0.1.44-1</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.0.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymockclassextension</artifactId>
            <version>2.4</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.clojure</groupId>
            <artifactId>clojure</artifactId>
            <version>1.2.0</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.clojure</groupId>
            <artifactId>clojure-contrib</artifactId>
            <version>1.2.0</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.github.technomancy</groupId>
            <artifactId>swank-clojure</artifactId>
            <version>1.2.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/clojure</directory>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/clojure</directory>
            </testResource>
            <testResource>
                <directory>src/test/resources</directory>
            </testResource>
        </testResources>
        <plugins>
            <plugin>
                <groupId>com.theoryinpractise</groupId>
                <artifactId>clojure-maven-plugin</artifactId>
                <version>1.3.3</version>
                <configuration>
                    <sourceDirectories>
                        <sourceDirectory>src/main/clojure</sourceDirectory>
                    </sourceDirectories>
                    <testSourceDirectories>
                        <testSourceDirectory>src/test/clojure</testSourceDirectory>
                    </testSourceDirectories>
                    <clojureOptions>-Xmx512m -Djava.awt.headless=true -XX:MaxPermSize=256m -Xss256k</clojureOptions>
                    <warnOnReflection>true</warnOnReflection>
                    <compileDeclaredNamespaceOnly>true</compileDeclaredNamespaceOnly>
                    <testDeclaredNamespaceOnly>false</testDeclaredNamespaceOnly>
                </configuration>
                <executions>
                    <execution>
                        <id>test-clojure</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.8</version>
                <executions>
                    <execution>
                        <id>integration</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                           <argLine>-Xmx512m -Xms256m -Djava.awt.headless=true -XX:MaxPermSize=256m -Xss256k</argLine>
                           <parallel>tests</parallel>
                           <threadCount>5</threadCount>
                           <!-- note that the groups/excluded groups don't work due to some problem
                        in surefire or testng. instead, we have to exclude via file path
                           <groups>integration</groups>
                           <excludedGroups>unit,performance,live</excludedGroups> -->
                            <excludes>
                                <exclude>**/*LiveTest.java</exclude>
                            </excludes>
                            <includes>
                                <include>**/*IntegrationTest.java</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <parallel>methods</parallel>
                    <threadCount>5</threadCount>
                    <!-- note that the groups/excluded groups don't work due to some problem
                          in surefire or testng. instead, we have to exclude via file path
                    <groups>unit,performance</groups>
                    <excludedGroups>integration,live</excludedGroups> -->
                    <excludes>
                        <exclude>**/*IntegrationTest.java</exclude>
                        <exclude>**/*LiveTest.java</exclude>
                    </excludes>
                    <properties>
                       <property>
                          <name>listener</name>
                          <value>${jclouds.test.listener}</value>
                       </property>
                   </properties>
                   <systemProperties>
                       <property>
                          <name>test.initializer</name>
                          <value>${test.initializer}</value>
                       </property>
                       <property>
                           <name>jclouds.wire.httpstream.url</name>
                           <value>${jclouds.wire.httpstream.url}</value>
                       </property>
                       <property>
                           <name>jclouds.wire.httpstream.md5</name>
                           <value>${jclouds.wire.httpstream.md5}</value>
                       </property>
                       <property>
                           <name>jclouds.blobstore.httpstream.url</name>
                           <value>${jclouds.blobstore.httpstream.url}</value>
                       </property>
                       <property>
                           <name>jclouds.blobstore.httpstream.md5</name>
                           <value>${jclouds.blobstore.httpstream.md5}</value>
                       </property>
                   </systemProperties>
                </configuration>
            </plugin>
            <!-- make sure we generate src jars too -->
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.7</version>
                <executions>
                    <execution>
                        <id>javadoc</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <additionalJOption>-J-Xmx256m</additionalJOption>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <quiet>true</quiet>
                    <links>
                        <link>http://download.oracle.com/javase/6/docs/api/</link>
                    </links>
                    <footer><![CDATA[
                     <!-- Google Analytics -->
<script type='text/javascript'>
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type='text/javascript'>
try {
var pageTracker = _gat._getTracker("UA-8638379-1");
pageTracker._trackPageview();
} catch(err) {}</script>
                     ]]></footer>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.0-beta-1</version>
                <executions>
                    <execution>
                        <id>enforce-banned-dependencies</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <bannedDependencies>
                                    <excludes>
                                        <exclude>:maven-dependency-plugin</exclude>
                                    </excludes>
                                </bannedDependencies>
                            </rules>
                        </configuration>
                    </execution>
                    <execution>
                        <id>enforce-java</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>[1.6,)</version>
                                </requireJavaVersion>
                                <requireMavenVersion>
                                    <version>[2.2.1,)</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <source>${maven.compile.source}</source>
                    <target>${maven.compile.target}</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.2</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Specification-Title>jclouds ${project.name}</Specification-Title>
                            <Specification-Vendor>jclouds</Specification-Vendor>
                            <Implementation-Vendor>jclouds</Implementation-Vendor>
                            <Implementation-Vendor-Id>org.jclouds.aws.s3</Implementation-Vendor-Id>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>
                            <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>      
                <artifactId>maven-remote-resources-plugin</artifactId>
                <version>1.2</version>
                <executions>             
                    <execution>
                        <id>process-remote-resources</id>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <resourceBundles>
                                <resourceBundle>org.jclouds:jclouds-resources:${project.version}</resourceBundle>
                            </resourceBundles>
                        </configuration>
                    </execution>          
                </executions>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.5</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.3</version>
                </plugin>
                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.1</version>
                </plugin>                
            </plugins>            
        </pluginManagement>
    </build>
    <profiles>
        <profile>
            <id>live</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.5</version>
                        <executions>
                            <execution>
                                <id>integration</id>
                                <phase>integration-test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <configuration>
                                    <!-- note that the groups/excluded groups don't work due to some problem
                                                     in surefire or testng. instead, we have to exclude via file path
                                                        <groups>live,integration</groups>
                                                        <excludedGroups>unit,performance</excludedGroups> -->
                                    <excludes>
                                        <exclude>none</exclude>
                                    </excludes>
                                    <includes>
                                        <include>**/*IntegrationTest.java</include>
                                        <include>**/*LiveTest.java</include>
                                    </includes>
                                    <systemProperties>
                                    <!--
                                        If you're behind a proxy, set this here
                                        http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html

                                        <property>
                                           <name>https.proxyHost</name>
                                           <value>proxy</value>
                                        </property>
                                        <property>
                                           <name>https.proxyPort</name>
                                           <value>port</value>
                                        </property>
                                        <property>
                                           <name>https.noProxyHosts</name>
                                           <value>localhost|10.150.4.49</value>
                                        </property>
                                  -->
                                        <property>
                                            <name>file.encoding</name>
                                            <value>${project.build.sourceEncoding}</value>
                                        </property>
                                        <property>
                                            <name>test.initializer</name>
                                            <value>${test.initializer}</value>
                                        </property>
                                        <property>
                                            <name>test.ssh.keyfile</name>
                                            <value>${test.ssh.keyfile}</value>
                                        </property>
                                        <property>
                                            <name>jclouds.blobstore.httpstream.url</name>
                                            <value>${jclouds.blobstore.httpstream.url}</value>
                                        </property>
                                        <property>
                                            <name>jclouds.blobstore.httpstream.md5</name>
                                            <value>${jclouds.blobstore.httpstream.md5}</value>
                                        </property>
                                        <property>
                                            <name>jclouds.wire.httpstream.url</name>
                                            <value>${jclouds.wire.httpstream.url}</value>
                                        </property>
                                        <property>
                                            <name>jclouds.wire.httpstream.md5</name>
                                            <value>${jclouds.wire.httpstream.md5}</value>
                                        </property>
                                    </systemProperties>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>distribution</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.2-beta-5</version>
                        <executions>
                            <execution>
                                <id>generate-distribution-files</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <!-- also default since 2.2-SNAPSHOT -->
                                    <ignoreDirFormatExtensions>true</ignoreDirFormatExtensions>
                                    <descriptors>
                                        <descriptor>src-descriptor.xml</descriptor>
                                        <descriptor>provided-dependencies-descriptor.xml</descriptor>                                        
                                        <descriptor>jar-with-dependencies-no-core-no-apis-descriptor.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.jclouds</groupId>
                                <artifactId>jclouds-assemblies</artifactId>
                                <version>${project.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- modifies the plugin config inherited from oss-parent -->
        <profile> 
            <id>sonatype-release-profile-extension</id>
            <activation>
                <property> 
                    <name>performRelease</name> 
                    <value>true</value> 
                </property>
            </activation>            
            <build> 
                <plugins>
                    <plugin>
                        <artifactId>maven-gpg-plugin</artifactId> 
                        <configuration>
                            <executable>${gpg.command}</executable>
                            <passphrase>${gpg.passphrase}</passphrase>
                        </configuration>
                    </plugin> 
                </plugins>
            </build> 
        </profile>        
        <profile>
            <id>clojure-1.1</id>
            <dependencies>
                <dependency>
                    <groupId>org.clojure</groupId>
                    <artifactId>clojure</artifactId>
                    <version>1.1.0</version>
                    <optional>true</optional>
                </dependency>
                <dependency>
                    <groupId>org.clojure</groupId>
                    <artifactId>clojure-contrib</artifactId>
                    <version>1.1.0</version>
                    <optional>true</optional>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>maven-2</id>
            <activation>
                <file>
                    <!-- only recognized by Maven 3.x (see MNG-2363) -->
                    <missing>${basedir}</missing>
                </file>
            </activation>
            <reporting>
                <plugins>
                    <plugin>
                        <artifactId>maven-project-info-reports-plugin</artifactId>
                        <version>2.1.2</version>
                        <reportSets>
                            <reportSet>
                                <reports>
                                    <report>cpd</report>
                                    <report>findbugs</report>
                                    <report>issue-tracking</report>
                                    <report>mail-lists</report>
                                    <report>pmd</report>
                                    <report>rat-report</report>
                                    <report>source-repository</report>
                                    <report>surefire-report</report>
                                    <report>maven-emma-plugin</report>
                                    <report>team-list</report>
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.6.1</version>
                        <configuration>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <quiet>true</quiet>
                        </configuration>
                        <reportSets>
                            <reportSet>
                                <id>default</id>
                                <reports>
                                    <report>aggregate</report>
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                    <plugin>
                        <groupId>org.sonatype.maven.plugin</groupId>
                        <artifactId>emma-maven-plugin</artifactId>
                        <version>1.2</version>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>surefire-report-maven-plugin</artifactId>
                        <version>2.0-beta-1</version>
                        <inherited>true</inherited>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>rat-maven-plugin</artifactId>
                        <version>1.0-alpha-3</version>
                        <inherited>true</inherited>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jxr-plugin</artifactId>
                        <version>2.2</version>
                        <configuration>
                            <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-pmd-plugin</artifactId>
                        <version>2.4</version>
                        <configuration>
                            <targetJdk>${maven.compile.source}</targetJdk>
                        </configuration>
                        <inherited>true</inherited>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>findbugs-maven-plugin</artifactId>
                        <version>2.3.1</version>
                        <configuration>
                            <xmlOutput>true</xmlOutput>
                        </configuration>
                        <inherited>true</inherited>
                    </plugin>
                </plugins>
            </reporting>
        </profile>
        <profile>
            <id>maven-3</id>
            <activation>
                <file>
                    <!-- only recognized by Maven 3.x (see MNG-2363) -->
                    <exists>${basedir}</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-site-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-descriptor</id>
                                <goals>
                                    <goal>attach-descriptor</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <artifactId>maven-site-plugin</artifactId>
                            <version>3.0-beta-3</version>
                            <configuration>
                                <reportPlugins>
                                    <plugin>
                                        <artifactId>maven-project-info-reports-plugin</artifactId>
                                        <version>2.3.1</version>
                                        <reportSets>
                                            <reportSet>
                                                <reports>
                                                    <report>index</report>
                                                    <report>dependencies</report>
                                                    <report>project-team</report>
                                                    <report>mailing-list</report>
                                                    <report>issue-tracking</report>
                                                    <report>license</report>
                                                    <report>scm</report>
                                                </reports>
                                            </reportSet>
                                        </reportSets>
                                    </plugin>
                                    <plugin>
                                        <artifactId>maven-javadoc-plugin</artifactId>
                                        <version>2.7</version>
                                        <configuration>
                                            <encoding>${project.build.sourceEncoding}</encoding>
                                            <quiet>true</quiet>
                                        </configuration>
                                        <reportSets>
                                            <reportSet>
                                                <id>default</id>
                                                <reports>
                                                    <report>aggregate</report>
                                                </reports>
                                            </reportSet>
                                        </reportSets>
                                    </plugin>
                                    <plugin>
                                        <groupId>org.sonatype.maven.plugin</groupId>
                                        <artifactId>emma-maven-plugin</artifactId>
                                        <version>1.2</version>
                                    </plugin>
                                    <plugin>
                                        <artifactId>maven-surefire-report-plugin</artifactId>
                                        <version>2.8</version>
                                    </plugin>
                                    <plugin>
                                        <groupId>org.apache.rat</groupId>
                                        <artifactId>apache-rat-plugin</artifactId>
                                        <version>0.7</version>
                                    </plugin>
                                    <plugin>
                                        <artifactId>maven-jxr-plugin</artifactId>
                                        <version>2.2</version>
                                        <configuration>
                                            <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
                                        </configuration>
                                    </plugin>
                                    <plugin>
                                        <artifactId>maven-pmd-plugin</artifactId>
                                        <version>2.5</version>
                                        <configuration>
                                            <targetJdk>${maven.compile.source}</targetJdk>
                                        </configuration>
                                    </plugin>
                                    <plugin>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>findbugs-maven-plugin</artifactId>
                                        <version>2.3.2</version>
                                        <configuration>
                                            <xmlOutput>true</xmlOutput>
                                        </configuration>
                                    </plugin>
                                </reportPlugins>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>jclouds-project</id>
            <activation>
                <file>
                    <!-- only in the jclouds-project module -->
                    <exists>src/etc/header.txt</exists>
                </file>
            </activation>        
            <build>
                <plugins>
                   <plugin>      
                        <artifactId>maven-remote-resources-plugin</artifactId>
                        <version>1.2</version>
                        <executions>
                            <execution>
                                <id>process-remote-resources</id>
                                <goals>
                                    <goal>process</goal>
                                </goals>
                                <configuration>
                                    <skip>true</skip>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>        
                </plugins>            
            </build>
        </profile>
    </profiles>
</project>
