<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>

    <groupId>io.brooklyn</groupId>
    <artifactId>brooklyn-parent</artifactId>
    <version>0.5.0-SNAPSHOT</version>  <!-- BROOKLYN_VERSION -->

    <name>Brooklyn Parent Project</name>
    <description>
        Brooklyn parent / project root, 
        serving as the ancestor POM for all projects --
        declaring versions, profiles, and the modules to build
    </description>
    <url>http://brooklyn.io/</url>

    <!-- useful custom properties/defines to specify to control the build:

      brooklyn.explicitModules :: only builds explicit modules (instead of default modules)

      brooklyn.deployTo={cloudsoftFilesystem,cloudsoftArtifactory,sonatype} :: 
            :: required when deploying; specify the deployment target

      javadoc :: build javadoc (adds a minute or two; included by default when deploying however)
      
      skipSources :: don't make the -sources.jar (saves a second or two, not much)
      
      skipTests :: does the usual thing (saves a lot of time, but at some cost of build quality!)


      simply activate with -Dbrooklyn.theCustomProperty on the mvn build line
      (some of these are used to trigger profile selection, since maven activeByDefault
      only works if _no_ profiles are triggered, see suggestion/background at:
      http://stackoverflow.com/questions/5309379/how-to-keep-maven-profiles-which-are-activebydefault-active-even-if-another-prof )
    -->

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>Brooklyn Committers</name>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:git://github.com/brooklyncentral/brooklyn.git</connection>
        <developerConnection>scm:git:git@github.com:brooklyncentral/brooklyn.git</developerConnection>
        <url>http://github.com/brooklyncentral/brooklyn</url>
    </scm>

    <repositories>
        <repository>
            <id>sonatype-nexus-snapshots</id>
            <name>Sonatype Nexus Snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases> <enabled>false</enabled> </releases>
            <snapshots> <enabled>true</enabled> </snapshots>
        </repository>
<!-- 
        <repository>
            <id>cloudsoft-cloudfront-releases-repo</id>
            <url>http://developers.cloudsoftcorp.com/maven/releases/</url>
        </repository>
        <repository>
            <id>cloudsoft-cloudfront-snapshots-repo</id>
            <url>http://developers.cloudsoftcorp.com/maven/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
           </snapshots>
         </repository>
 -->
    </repositories>

    <distributionManagement>
        <!-- defined below in profiles so we can easily target multiple repos -->
        <repository>
            <id>${repo_id}</id>
            <name>${repo_name}</name>
            <url>${repo_url}</url>
        </repository>
        <snapshotRepository>
            <id>${snapshot_repo_id}</id>
            <name>${snapshot_repo_name}</name>
            <url>${snapshot_repo_url}</url>
        </snapshotRepository>
    </distributionManagement>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <brooklyn.version>0.5.0-SNAPSHOT</brooklyn.version>  <!-- BROOKLYN_VERSION -->

        <cobertura.version>1.9.4.1</cobertura.version>
        <surefire.version>2.13</surefire.version>
        <plantuml.version>6121</plantuml.version>
        <ant.version>1.8.4</ant.version>

        <groovy.version>1.8.6</groovy.version>
        <testng.version>6.8</testng.version>
        <mockito.version>1.9.5</mockito.version>
        <whirr.version>0.8.1</whirr.version>
        <logback.version>1.0.7</logback.version>
        <slf4j.version>1.6.6</slf4j.version>
        <xstream.version>1.3.1</xstream.version>
        <jackson.version>1.9.10</jackson.version>
        <jansi.version>1.2.1</jansi.version>
        <guava.version>13.0.1</guava.version>
        <jsr305.version>2.0.1</jsr305.version>
        <ivy.version>2.2.0</ivy.version>
        <jclouds.version>1.5.4</jclouds.version>
        <mx4j.version>3.0.1</mx4j.version>
        <bouncycastle.version>1.46</bouncycastle.version>
        <sshj.version>0.8.1</sshj.version>
        <reflections.version>0.9.8</reflections.version>
        <jetty.version>8.1.4.v20120524</jetty.version>
        <git-like-cli.version>0.3</git-like-cli.version>
        <mockwebserver.version>20121111</mockwebserver.version>
        <httpclient.version>4.1.3</httpclient.version>

        <includedTestGroups />
        <excludedTestGroups>Integration,Live,WIP</excludedTestGroups>
        
        <!-- no passphrase by default, so we can do automated deploy builds;
             you can still supply your own passphrase with -Dgpg.passphrase=XXX -->
        <gpg.passphrase></gpg.passphrase>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- include version numbers for common dependencies (including common brooklyn deps) -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>brooklyn-api</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>brooklyn-test-support</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>brooklyn-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>brooklyn-policy</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>brooklyn-logback-xml</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.ivy</groupId>
                <artifactId>ivy</artifactId>
                <version>${ivy.version}</version>
            </dependency>
            <dependency>
                <groupId>com.thoughtworks.xstream</groupId>
                <artifactId>xstream</artifactId>
                <version>${xstream.version}</version>
            </dependency>
            <dependency>
                <groupId>org.fusesource.jansi</groupId>
                <artifactId>jansi</artifactId>
                <version>${jansi.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>jsr305</artifactId>
                <version>${jsr305.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                <version>${groovy.version}</version>
            </dependency>
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>${testng.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jclouds</groupId>
                <artifactId>jclouds-allcompute</artifactId>
                <version>${jclouds.version}</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>org.jclouds.driver</groupId>
                <artifactId>jclouds-sshj</artifactId>
                <version>${jclouds.version}</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant</artifactId>
                <version>${ant.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant-launcher</artifactId>
                <version>${ant.version}</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.plantuml</groupId>
                <artifactId>plantuml</artifactId>
                <version>${plantuml.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <testSourceDirectory>src/test/java</testSourceDirectory>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
            </testResource>
        </testResources>

        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.3</version>
                </plugin>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.6</version>
                </plugin>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>2.4.1</version>
                    <configuration>
                        <filesets>
                            <fileset>
                                <directory>.</directory>
                                <includes>
                                    <include>brooklyn*.log</include>
                                    <include>brooklyn*.log.*</include>
                                    <include>stacktrace.log</include>
                                    <include>test-output</include>
                                    <include>prodDb.*</include>
                                </includes>
                            </fileset>
                        </filesets>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.5</version>
                </plugin>
                <plugin>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>1.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.9</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.3.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.1.2</version>
                    <inherited>true</inherited>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.8</version>
                    <inherited>true</inherited>
                    <configuration>
                        <links>
                            <link>http://download.oracle.com/javaee/6/api</link>
                        </links>
                        <keywords>true</keywords>
                        <author>false</author>
                        <quiet>true</quiet>
                        <aggregate>false</aggregate>
                        <detectLinks />
                        <tags>
                            <tag>
                                <name>todo</name>
                                <placement>a</placement>
                                <head>To-do:</head>
                            </tag>
                        </tags>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>1.1</version>
                    <executions>
                        <execution>
                            <id>sign-artifacts</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <!-- 'release' is not used; easier just to checkout, tag, `mvn deploy` manually
                         with -Dbrooklyn.deployTo=TARGET ... and note we need to update docs and examples, 
                         which is a non-maven task!) -->
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.1</version>
                    <configuration>
                        <mavenExecutorId>forked-path</mavenExecutorId>
                        <useReleaseProfile>false</useReleaseProfile>
                        <arguments>-Dbrooklyn.deployTo=sonatype</arguments>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.4.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>1.5</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <shadedArtifactAttached>true</shadedArtifactAttached>
                                <shadedClassifierName>with-dependencies</shadedClassifierName>
                                <filters>
                                    <filter>
                                        <artifact>*:*</artifact>
                                        <excludes>
                                            <exclude>META-INF/*.SF</exclude>
                                            <exclude>META-INF/*.DSA</exclude>
                                            <exclude>META-INF/*.RSA</exclude>
                                        </excludes>
                                    </filter>
                                </filters>
                                <transformers>
                                    <!-- whirr, among others, uses services which need careful attention -->
                                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                     <artifactId>maven-surefire-plugin</artifactId>
                     <version>${surefire.version}</version>
                     <configuration>
                         <argLine>-Xms256m -Xmx512m -XX:MaxPermSize=512m</argLine>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-eclipse-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
                        <additionalProjectnatures>
                            <projectnature>org.eclipse.jdt.groovy.core.groovyNature</projectnature>
                        </additionalProjectnatures>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>2.3.4</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <version>2.3.2</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.7</version>
                </plugin>
                <plugin>
                    <groupId>net.sourceforge.cobertura</groupId>
                    <artifactId>cobertura</artifactId>
                    <version>${cobertura.version}</version>
                </plugin>
                <plugin>
                    <!-- This configuration is used for Eclipse settings only. -->
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-dependency-plugin</artifactId>
                                        <versionRange>[2.1,)</versionRange>
                                        <goals>
                                            <goal>copy</goal>
                                            <goal>copy-dependencies</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.felix</groupId>
                                        <artifactId>maven-bundle-plugin</artifactId>
                                        <versionRange>[2.3.4,)</versionRange>
                                        <goals>
                                            <goal>manifest</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-javadoc-plugin</artifactId>
                                        <versionRange>[2.7,3)</versionRange>
                                        <goals>
                                            <goal>jar</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-enforcer-plugin</artifactId>
                                        <versionRange>[1.0,)</versionRange>
                                        <goals>
                                            <goal>enforce</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>brooklyn-build-req</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <inherited>true</inherited>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>1.6.0</version>
                                </requireJavaVersion>
                                <requireMavenVersion>
                                    <version>[3.0.0,)</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <compilerId>groovy-eclipse-compiler</compilerId>
                    <fork>true</fork>
                    <verbose>false</verbose>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.codehaus.groovy</groupId>
                        <artifactId>groovy-eclipse-compiler</artifactId>
                        <version>2.7.0-01</version>
                    </dependency>
                    <dependency>
                        <groupId>org.codehaus.groovy</groupId>
                        <artifactId>groovy-eclipse-batch</artifactId>
                        <version>1.8.6-01</version>
                    </dependency>
                </dependencies>
            </plugin>
            <!--  workaround for src/main/resources excluding all in eclipse, as per
                  https://issues.sonatype.org/browse/MNGECLIPSE-864 -->
            <plugin>
                <groupId>com.google.code.maven-replacer-plugin</groupId>
                <artifactId>maven-replacer-plugin</artifactId>
                <version>1.4.0</version>
                <executions>
                    <execution>
                        <phase>clean</phase>
                        <goals>
                            <goal>replace</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <ignoreMissingFile>true</ignoreMissingFile>
                    <file>.classpath</file>
                    <regex>false</regex>
                    <replacements>
                        <replacement>
                            <xpath>/classpath/classpathentry[@path='src/main/resources' and @kind='src' and @excluding='**']/@excluding</xpath>
                            <token>**</token>
                            <value></value>
                        </replacement>
                    </replacements>
                </configuration>
            </plugin>
        </plugins>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh-external</artifactId>
                <version>1.0</version>
            </extension>
        </extensions>
    </build>

    <profiles>
        <profile>
            <id>External</id>
            <distributionManagement>
                <repository>
                    <id>ssh-repository</id>
                    <url>scpexe://cruiser@releng1.cloudsoftcorp.com/var/www/downloads/maven2/releases</url>
                </repository>
                <site>
                    <id>developers.cloudsoftcorp.com</id>
                    <url>
                        scpexe://cruiser@releng1.cloudsoftcorp.com/var/www/downloads/autodocs/${project.groupId}-${project.version}
                    </url>
                </site>
            </distributionManagement>
        </profile>

        <!-- TODO <profile> <id>Sources</id> <plugins> <plugin> <artifactId>maven-source-plugin</artifactId> </plugin> </plugins> 
            <plugins> <plugin> <artifactId>maven-javadoc-plugin</artifactId> </plugin> </plugins> </profile> -->

        <profile>
            <id>Essentials</id>
            <activation> <property><name> !brooklyn.explicitModules </name></property> </activation>
            <modules>
                <module>api</module>
                <module>usage/test-support</module>
                <module>core</module>
                <module>policy</module>
            </modules>
        </profile>
        <profile>
            <id>Entities</id>
            <activation> <property><name> !brooklyn.explicitModules </name></property> </activation>
            <modules>
                <module>util/jmx/jmxmp-ssl-agent</module>
                <module>software/base</module>
                <module>software/osgi</module>
                <module>software/webapp</module>
                <module>software/messaging</module>
                <module>software/nosql</module>
                <module>software/database</module>
                <module>systems/whirr/base</module>
                <module>systems/whirr/hadoop</module>
                <module>systems/paas/openshift</module>
                <module>systems/paas/cloudfoundry</module>
            </modules>
        </profile>
        <profile>
            <id>Usage</id>
            <activation> <property><name> !brooklyn.explicitModules </name></property> </activation>
            <modules>
                <module>usage/logback-xml</module>
                <module>usage/rest</module>
                <module>usage/jsgui</module>
                <module>usage/launcher</module>
                <module>usage/cli</module>
                <module>usage/all</module>
                <module>usage/dist</module>
            </modules>
        </profile>
        <profile>
            <id>Examples</id>
            <activation> <property><name> !brooklyn.explicitModules </name></property> </activation>
            <modules>
                <module>examples</module>
            </modules>
        </profile>
        <profile>
            <id>QA</id>
            <activation> <property><name> !brooklyn.explicitModules </name></property> </activation>
            <modules>
                <module>usage/qa</module>
            </modules>
        </profile>
        <profile>
            <id>Sandbox</id>
            <modules>
                <module>sandbox/rest</module>
                <module>sandbox/database</module>
                <module>sandbox/mgmt</module>
                <module>sandbox/web-acceptance</module>
            </modules>
        </profile>
        <profile>
            <id>Documentation</id>
            <reporting>
                <excludeDefaults>true</excludeDefaults>
                <plugins>
                    <plugin>
                        <artifactId>maven-project-info-reports-plugin</artifactId>
                        <version>2.4</version>
                        <reportSets>
                            <reportSet>
                                <reports>
                                    <report>index</report>
                                    <report>modules</report>
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.8</version>
                        <configuration>
                            <links>
                                <link>http://download.oracle.com/javaee/6/api</link>
                            </links>
                            <keywords>true</keywords>
                            <author>false</author>
                            <quiet>true</quiet>
                            <aggregate>false</aggregate>
                            <detectLinks />
                            <tags>
                                <tag>
                                    <name>todo</name>
                                    <placement>a</placement>
                                    <head>To-do:</head>
                                </tag>
                            </tags>
                        </configuration>
                        <reportSets>
                            <reportSet>
                                <id>javadoc</id>
                                <reports>
                                    <report>javadoc</report>
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                </plugins>
            </reporting>
        </profile>

        <profile>
            <id>Bundle</id>
            <activation>
                <file>
                    <exists>${basedir}/src</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.felix</groupId>
                        <artifactId>maven-bundle-plugin</artifactId>
                        <extensions>true</extensions>
                        <executions>
                            <execution>
                                <id>bundle-manifest</id>
                                <phase>process-classes</phase>
                                <goals>
                                    <goal>manifest</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>dist</id>
            <activation>
                <file>
                    <exists>dist.xml</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>build-distribution</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <appendAssemblyId>true</appendAssemblyId>
                                    <archiveBaseDirectory>brooklyn</archiveBaseDirectory>
                                    <descriptors>
                                        <descriptor>dist.xml</descriptor>
                                    </descriptors>
                                    <useProjectArtifact>false</useProjectArtifact>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>Java</id>
            <activation>
                <file>
                    <exists>${basedir}/src/main/java</exists>
                </file>
            </activation>
        </profile>
        <profile>
            <id>UML</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <inherited>true</inherited>
                        <executions>
                            <execution>
                                <id>generate-plantuml</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <target>
                                        <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath" />
                                        <taskdef name="plantuml" classname="net.sourceforge.plantuml.ant.PlantUmlTask"
                                            classpathref="maven.plugin.classpath" />
                                        <if>
                                            <available file="${basedir}/src/main/java" type="dir" />
                                            <then>
                                                <plantuml output="${project.build.directory}/plantuml">
                                                    <fileset dir="${basedir}/src/main/java">
                                                        <include name="**/*.java" />
                                                        <include name="**/*.groovy" />
                                                    </fileset>
                                                </plantuml>
                                            </then>
                                        </if>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.ant</groupId>
                                <artifactId>ant-launcher</artifactId>
                                <version>${ant.version}</version>
                            </dependency>
                            <dependency>
                                <groupId>org.apache.ant</groupId>
                                <artifactId>ant</artifactId>
                                <version>${ant.version}</version>
                            </dependency>
                            <dependency>
                                <groupId>ant-contrib</groupId>
                                <artifactId>ant-contrib</artifactId>
                                <version>1.0b3</version>
                                <exclusions>
                                    <exclusion>
                                        <groupId>ant</groupId>
                                        <artifactId>ant</artifactId>
                                    </exclusion>
                                </exclusions>
                            </dependency>
                            <dependency>
                                <groupId>net.sourceforge.plantuml</groupId>
                                <artifactId>plantuml</artifactId>
                                <version>${plantuml.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>Tests</id>
            <activation>
                <file> <exists>${basedir}/src/test</exists> </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>${surefire.version}</version>
                        <configuration>
                            <properties>
                                <property>
                                    <name>listener</name>
                                    <value>brooklyn.test.LoggingVerboseReporter</value>
                                </property>
                            </properties>
                            <enableAssertions>true</enableAssertions>
                            <groups>${includedTestGroups}</groups>
                            <excludedGroups>${excludedTestGroups}</excludedGroups>
                            <testFailureIgnore>false</testFailureIgnore>
                            <systemPropertyVariables>
                                <verbose>-1</verbose>
                                <net.sourceforge.cobertura.datafile>${project.build.directory}/cobertura/cobertura.ser</net.sourceforge.cobertura.datafile>
                                <cobertura.user.java.nio>false</cobertura.user.java.nio>
                            </systemPropertyVariables>
                            <printSummary>true</printSummary>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <inherited>true</inherited>
                        <executions>
                            <execution>
                                <id>test-jar-creation</id>
                                <goals>
                                    <goal>test-jar</goal>
                                </goals>
                                <configuration>
                                    <forceCreation>true</forceCreation>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>CI</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>findbugs-maven-plugin</artifactId>
                        <configuration>
                            <xmlOutput>true</xmlOutput>
                            <xmlOutputDirectory>target/site</xmlOutputDirectory>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>process-classes</phase>
                                <goals>
                                    <goal>findbugs</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <artifactId>maven-pmd-plugin</artifactId>
                        <version>2.5</version>
                        <inherited>true</inherited>
                        <configuration>
                            <failOnViolation>false</failOnViolation>
                            <linkXref>true</linkXref>
                            <sourceEncoding>utf-8</sourceEncoding>
                            <minimumTokens>100</minimumTokens>
                            <targetJdk>1.6</targetJdk>
                            <excludes>
                                <exclude>**/*Test.java</exclude>
                                <exclude>**/tests/**/*.java</exclude>
                                <!-- add any more generated source code directories here -->
                            </excludes>
                            <excludeRoots>
                                <excludeRoot>
                                    ${pom.basedir}/target/generated-sources/groovy-stubs/main
                                </excludeRoot>
                            </excludeRoots>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>process-classes</phase>
                                <goals>
                                    <goal>check</goal>
                                    <goal>cpd-check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>Integration</id>
            <properties>
                <includedTestGroups>Integration</includedTestGroups>
                <excludedTestGroups>Live,WIP</excludedTestGroups>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <inherited>true</inherited>
                        <executions>
                            <execution>
                                <id>run-tests</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>integration-test</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>test-jar-creation</id>
                                <configuration>
                                    <skip>true</skip>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>Live</id>
            <properties>
                <includedTestGroups>Live</includedTestGroups>
                <excludedTestGroups>WIP</excludedTestGroups>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <inherited>true</inherited>
                        <executions>
                            <execution>
                                <id>run-tests</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>integration-test</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>test-jar-creation</id>
                                <configuration>
                                    <skip>true</skip>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>Coverage</id>
            <dependencies>
                <dependency>
                    <groupId>net.sourceforge.cobertura</groupId>
                    <artifactId>cobertura</artifactId>
                    <version>${cobertura.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <inherited>true</inherited>
                        <executions>
                            <execution>
                                <id>run-tests</id>
                            </execution>
                            <execution>
                                <id>instrument classes</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>process-test-classes</phase>
                                <configuration>
                                    <target>
                                        <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath" />
                                        <taskdef resource="tasks.properties" classpathref="maven.plugin.classpath" />
                                        <if>
                                            <available property="gogocobertura" file="target/test-classes" />
                                            <then>
                                                <echo message="INSTRUMENTING CLASSES FOR COBERTURA" />
                                                <!-- Ensure any and all bits of our project are copied in first -->
                                                <copy todir="target/cobertura/coverage-classes">
                                                    <fileset erroronmissingdir="false" dir="target/classes" />
                                                </copy>
                                                <cobertura-instrument datafile="target/cobertura/cobertura.ser"
                                                    todir="target/test-classes">
                                                    <fileset erroronmissingdir="false" dir="target/classes">
                                                        <include name="brooklyn/**/*.class" />
                                                        <exclude name="brooklyn/**/*Test.class" />
                                                    </fileset>
                                                    <fileset erroronmissingdir="false" dir="target/cobertura/dependency-classes">
                                                        <include name="brooklyn/**/*.class" />
                                                        <exclude name="brooklyn/**/*Test.class" />
                                                    </fileset>
                                                </cobertura-instrument>
                                            </then>
                                        </if>
                                    </target>
                                </configuration>
                            </execution>
                            <execution>
                                <id>coverage report</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>post-integration-test</phase>
                                <configuration>
                                    <target>
                                        <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath" />
                                        <taskdef resource="tasks.properties" classpathref="maven.plugin.classpath" />
                                        <if>
                                            <available property="gogocobertura" file="target/cobertura/cobertura.ser" />
                                            <then>
                                                <echo message="GENERATING COBERTURA COVERAGE REPORT" />
                                                <cobertura-report format="xml" destdir="target/site/cobertura"
                                                    datafile="target/cobertura/cobertura.ser">
                                                    <fileset erroronmissingdir="false" dir="src/java" />
                                                    <fileset erroronmissingdir="false" dir="target/cobertura/dependency-sources" />
                                                </cobertura-report>
                                            </then>
                                        </if>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>ant-contrib</groupId>
                                <artifactId>ant-contrib</artifactId>
                                <version>1.0b3</version>
                                <exclusions>
                                    <exclusion>
                                        <groupId>ant</groupId>
                                        <artifactId>ant</artifactId>
                                    </exclusion>
                                </exclusions>
                            </dependency>
                            <dependency>
                                <groupId>org.apache.ant</groupId>
                                <artifactId>ant-launcher</artifactId>
                                <version>${ant.version}</version>
                            </dependency>
                            <dependency>
                                <groupId>org.apache.ant</groupId>
                                <artifactId>ant</artifactId>
                                <version>${ant.version}</version>
                            </dependency>
                            <dependency>
                                <groupId>org.testng</groupId>
                                <artifactId>testng</artifactId>
                                <version>${testng.version}</version>
                            </dependency>
                            <dependency>
                                <groupId>net.sourceforge.cobertura</groupId>
                                <artifactId>cobertura</artifactId>
                                <version>${cobertura.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                    <plugin>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>unpack-coverage-sources</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>unpack-dependencies</goal>
                                </goals>
                                <configuration>
                                    <classifier>sources</classifier>
                                    <includeScope>compile</includeScope>
                                    <includeGroupIds>brooklyn</includeGroupIds>
                                    <outputDirectory>
                                        ${project.build.directory}/cobertura/dependency-sources
                                    </outputDirectory>
                                    <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>
                                </configuration>
                            </execution>
                            <execution>
                                <id>unpack-coverage-classes</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>unpack-dependencies</goal>
                                </goals>
                                <configuration>
                                    <type>jar</type>
                                    <includeScope>compile</includeScope>
                                    <includeGroupIds>brooklyn</includeGroupIds>
                                    <outputDirectory>
                                        ${project.build.directory}/cobertura/dependency-classes
                                    </outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>${surefire.version}</version>
                        <inherited>true</inherited>
                        <configuration>
                            <reportFormat>xml</reportFormat>
                            <classesDirectory>${project.build.directory}/cobertura/coverage-classes</classesDirectory>
                            <systemProperties>
                                <property>
                                    <name>net.sourceforge.cobertura.datafile</name>
                                    <value>${project.build.directory}/cobertura/cobertura.ser
                                    </value>
                                </property>
                                <property>
                                    <name>cobertura.user.java.nio</name>
                                    <value>false</value>
                                </property>
                            </systemProperties>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>test-jar-creation</id>
                                <configuration>
                                    <skip>true</skip>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- build sources jars by default, it's quick -->
        <profile>
            <id>make-sources-jar</id>
            <activation> <property><name>!skipSources</name></property> </activation>
            <build><plugins><plugin>
                <artifactId>maven-source-plugin</artifactId>
            </plugin></plugins></build>
        </profile>
        
        <!-- only build javadoc if asked, or if deploying (it's slow) -->
        <profile>
            <id>make-javadoc-jar</id>
            <activation> <property><name>javadoc</name></property> </activation>            
            <build><plugins><plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin></plugins></build>
        </profile>
        
        <!-- sign and make javadoc when deploying; note, this means you'll need gpg set up to deploy -->
        <profile>
            <id>make-more-things-when-deploying</id>
            <activation> <property><name>brooklyn.deployTo</name></property> </activation>            
            <build><plugins>
                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId>
                </plugin>
                <plugin>
                    <artifactId>maven-gpg-plugin</artifactId>
                </plugin>
            </plugins></build>
        </profile>

        <!-- different properties used to deploy to different locations depending on profiles;
             default is cloudsoft filesystem repo, but some sources still use cloudsoft artifactory as source
             (and soon we will support artifactory) -->
        <profile>
            <id>cloudsoft-filesystem-repo</id>
            <activation> <property><name>brooklyn.deployTo</name><value>cloudsoftFilesystem</value></property> </activation>
            <properties>
                <repo_id>cloudsoft-deploy-cloudfront-origin-releases</repo_id>
                <repo_name>Cloudsoft Release Filesystem repo (used as origin for cloudfront)</repo_name>
                <repo_url>scpexe://root@developers-origin.cloudsoftcorp.com/var/www/developers/maven/releases/</repo_url>
                <snapshot_repo_id>cloudsoft-deploy-cloudfront-origin-snapshots</snapshot_repo_id>
                <snapshot_repo_name>Cloudsoft Snapshot Filesystem repo (used as origin for cloudfront)</snapshot_repo_name>
                <snapshot_repo_url>scpexe://root@developers-origin.cloudsoftcorp.com/var/www/developers/maven/snapshots/</snapshot_repo_url>
            </properties>
        </profile>
        <profile>
            <id>cloudsoft-artifactory-repo</id>
            <activation> <property><name>brooklyn.deployTo</name><value>cloudsoftArtifactory</value></property> </activation>
            <properties>
                <repo_id>cloudsoft-deploy-artifactory-release</repo_id>
                <repo_name>Cloudsoft Artifactory libs-release-local repo</repo_name>
                <repo_url>http://ccweb.cloudsoftcorp.com/maven/libs-release-local/</repo_url>
                <snapshot_repo_id>cloudsoft-deploy-artifactory-snapshot</snapshot_repo_id>
                <snapshot_repo_name>Cloudsoft Artifactory libs-snapshot-local repo</snapshot_repo_name>
                <snapshot_repo_url>http://ccweb.cloudsoftcorp.com/maven/libs-snapshot-local/</snapshot_repo_url>
            </properties>
        </profile>
        <profile>
            <id>sonatype-nexus-repo</id>
            <activation> <property><name>brooklyn.deployTo</name><value>sontatype</value></property> </activation>
            <properties>
                <repo_id>sonatype-nexus-staging</repo_id>
                <repo_name>Nexus Release Repository</repo_name>
                <repo_url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</repo_url>
                <snapshot_repo_id>sonatype-nexus-snapshots</snapshot_repo_id>
                <snapshot_repo_name>Sonatype Nexus Snapshots</snapshot_repo_name>
                <snapshot_repo_url>https://oss.sonatype.org/content/repositories/snapshots/</snapshot_repo_url>
            </properties>
        </profile>
    </profiles>

</project>
