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

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>14</version>
  </parent>

  <groupId>org.apache.jclouds</groupId>
  <artifactId>jclouds-karaf</artifactId>
  <packaging>pom</packaging>
  <version>2.1.1</version>
  <name>Apache jclouds :: Karaf</name>
  <url>http://jclouds.apache.org</url>
  <description>jclouds Karaf Integration Project</description>
  <inceptionYear>2009</inceptionYear>

  <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>

  <scm>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/jclouds-karaf.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/jclouds-karaf.git</developerConnection>
    <url>https://git-wip-us.apache.org/repos/asf?p=jclouds-karaf.git</url>
    <tag>rel/jclouds-karaf-2.1.1-rc3</tag>
  </scm>

  <developers>
    <developer>
      <id>iocanel</id>
      <name>Ioannis Canellos</name>
      <email>iocanel@gmail.com</email>
      <url>http://iocanel.blogspot.com</url>
    </developer>
  </developers>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>0.10</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludes>

            <!-- prevent duplicating license -->
            <exclude>**/LICENSE.txt</exclude>
            <exclude>**/header.txt</exclude>

            <!-- high-level project metadata -->
            <exclude>**/NOTICE.txt</exclude>
            <exclude>**/DISCLAIMER</exclude>
            <exclude>**/BUILD.txt</exclude>
            <exclude>**/CHANGES.txt</exclude>
            <exclude>**/README.md</exclude>
            <exclude>**/README.txt</exclude>
            <exclude>**/DEPENDENCIES</exclude>
            <exclude>**/CONTRIBUTING.md</exclude>

            <exclude>.git/**</exclude>
            <exclude>**/.gitignore</exclude>
            <exclude>**/*.json</exclude>
            <exclude>**/*.log*</exclude>
            <exclude>**/TODO</exclude>
            <exclude>.mailmap</exclude>
            <exclude>.idea/**</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>**/.project</exclude>
            <exclude>**/.classpath</exclude>
            <exclude>**/.settings/**</exclude>
            <exclude>**/.checkstyle</exclude>
            <exclude>**/target/**</exclude>
            <exclude>.repository/**</exclude>

            <!-- Excluded because these text files are spat out directly as help -->
            <exclude>**/src/main/resources/**/*.txt</exclude>
            <!-- binary -->
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>${maven-bundle-plugin.version}</version>
        <extensions>true</extensions>
        <inherited>true</inherited>
        <configuration>
          <instructions>
            <Bundle-Name>${project.name}</Bundle-Name>
            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
            <Export-Package>${osgi.export}</Export-Package>
            <Import-Package>${osgi.import}</Import-Package>
            <DynamicImport-Package>${osgi.dynamic.import}</DynamicImport-Package>
            <Private-Package>${osgi.private}</Private-Package>
            <Require-Bundle>${osgi.bundles}</Require-Bundle>
            <Bundle-Activator>${osgi.activator}</Bundle-Activator>
            <Export-Service>${osgi.export.service}</Export-Service>
          </instructions>
          <supportedProjectTypes>
            <supportedProjectType>jar</supportedProjectType>
            <supportedProjectType>war</supportedProjectType>
            <supportedProjectType>bundle</supportedProjectType>
          </supportedProjectTypes>
          <unpackBundle>true</unpackBundle>
        </configuration>
        <executions>
          <execution>
            <id>bundle-manifest</id>
            <phase>process-classes</phase>
            <goals>
              <goal>manifest</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler-plugin.version}</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>${maven-release-plugin.version}</version>
        <configuration>
          <useReleaseProfile>false</useReleaseProfile>
          <preparationGoals>clean install</preparationGoals>
          <goals>deploy</goals>
          <arguments>-Pdoc -Papache-release ${arguments}</arguments>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <modules>
    <module>core</module>
    <module>bundles</module>
    <module>utils</module>
    <module>cache</module>
    <module>commands</module>
    <module>services</module>
    <module>urlhandler</module>
    <module>chef</module>
    <module>feature</module>
    <module>feature-labs</module>
    <module>recipe</module>
    <module>itests</module>
  </modules>

  <properties>
    <jdk.version>1.7</jdk.version>
    <aopalliance.bundle.version>1.0_5</aopalliance.bundle.version>
    <bcprov.version>1.51</bcprov.version>
    <easymock.version>3.0</easymock.version>
    <felix.configadmin.version>1.8.0</felix.configadmin.version>
    <groovy.version>2.4.4</groovy.version>
    <gson.version>2.5</gson.version>
    <guava.version>18.0</guava.version>
    <guava.test.version>10.0</guava.test.version>
    <guice.version>3.0</guice.version>
    <httpclient.version>4.3.4</httpclient.version>
    <httpcore.version>4.3.2</httpcore.version>
    <java-xmlbuilder.bundle.version>1.1_1</java-xmlbuilder.bundle.version>
    <javax.inject.bundle.version>1_1</javax.inject.bundle.version>
    <javax.ws.rs.api.version>2.0.1</javax.ws.rs.api.version>
    <jclouds.version>2.1.1</jclouds.version>
    <jclouds.chef.version>${jclouds.version}</jclouds.chef.version>
    <jersey.version>1.11</jersey.version>
    <jersey.bundle.version>1.11_1</jersey.bundle.version>
    <joda.version>2.1</joda.version>
    <jsch.version>0.1.54</jsch.version>
    <jsch.bundle.version>${jsch.version}_1</jsch.bundle.version>
    <jsch.agentproxy.version>0.0.9</jsch.agentproxy.version>
    <jsch.agentproxy.bundle.version>${jsch.agentproxy.version}_1</jsch.agentproxy.bundle.version>
    <jsr305.bundle.version>1.3.9_1</jsr305.bundle.version>
    <sericemix.specs.jsr250.version>1.9.0</sericemix.specs.jsr250.version>
    <junit.version>4.8.2</junit.version>
    <jzlib.bundle.version>1.0.7_1</jzlib.bundle.version>
    <jzlib.version>1.0.7</jzlib.version>
    <karaf.version>4.0.9</karaf.version>
    <net.oauth.bundle.version>20100527_1</net.oauth.bundle.version>
    <netty.bundle.version>3.5.9.Final</netty.bundle.version>
    <osgi.version>6.0.0</osgi.version>
    <pax-exam.version>2.6.0</pax-exam.version>
    <pax-url-mvn.version>1.3.5</pax-url-mvn.version>
    <pax-url-aether.version>1.4.0.RC1</pax-url-aether.version>
    <slf4j.version>1.5.8</slf4j.version>
    <snakeyaml.version>1.17</snakeyaml.version>
    <okhttp.version>2.2.0</okhttp.version>
    <okio.version>1.2.0</okio.version>
    <okhttp.bundle.version>${okhttp.version}_1</okhttp.bundle.version>
    <okio.bundle.version>${okio.version}_1</okio.bundle.version>
    <vagrant-java-bindings.version>0.2.0</vagrant-java-bindings.version>

    <!-- Plugin Versions -->
    <depends-maven-plugin.version>1.2</depends-maven-plugin.version>
    <maven-bundle-plugin.version>2.1.0</maven-bundle-plugin.version>
    <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
    <maven-dependency-plugin.version>2.3</maven-dependency-plugin.version>
    <maven-war-plugin.version>2.1.1</maven-war-plugin.version>
    <maven-release-plugin.version>2.4</maven-release-plugin.version>
    <maven-remote-resources-plugin.version>1.2.1</maven-remote-resources-plugin.version>
    <maven-resources-plugin.version>2.4.3</maven-resources-plugin.version>
    <maven-surefire-plugin.version>2.10</maven-surefire-plugin.version>
    <build-helper-maven-plugin.version>1.5</build-helper-maven-plugin.version>

    <sourceReleaseAssemblyDescriptor>source-release-zip-tar</sourceReleaseAssemblyDescriptor>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!-- Internal dependencies -->
      <dependency>
        <groupId>org.apache.jclouds.karaf</groupId>
        <artifactId>core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.karaf</groupId>
        <artifactId>utils</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.karaf</groupId>
        <artifactId>recipe</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.karaf</groupId>
        <artifactId>cache</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.karaf</groupId>
        <artifactId>services</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.karaf</groupId>
        <artifactId>commands</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.karaf.chef</groupId>
        <artifactId>core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.karaf.chef</groupId>
        <artifactId>services</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.karaf.chef</groupId>
        <artifactId>commands</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.jclouds.karaf</groupId>
        <artifactId>jclouds-karaf</artifactId>
        <version>${project.version}</version>
        <type>xml</type>
        <classifier>features</classifier>
      </dependency>


      <!-- OSGi dependencies -->
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.core</artifactId>
        <version>${osgi.version}</version>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>osgi.cmpn</artifactId>
        <version>${osgi.version}</version>
      </dependency>

      <!-- Configuration Admin -->
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.configadmin</artifactId>
        <version>${felix.configadmin.version}</version>
      </dependency>

      <!-- Pax Url -->
      <dependency>
        <groupId>org.ops4j.pax.url</groupId>
        <artifactId>pax-url-mvn</artifactId>
        <version>${pax-url-mvn.version}</version>
      </dependency>

      <dependency>
        <groupId>org.ops4j.pax.url</groupId>
        <artifactId>pax-url-aether</artifactId>
        <version>${pax-url-aether.version}</version>
      </dependency>

      <dependency>
        <groupId>org.ops4j.pax.exam</groupId>
        <artifactId>pax-exam-junit4</artifactId>
        <version>${pax-exam.version}</version>
        <scope>test</scope>
      </dependency>

      <!-- Guice Dependencies -->
      <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.aopalliance</artifactId>
        <version>${aopalliance.bundle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.netty</artifactId>
        <version>${netty.bundle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.jsch</artifactId>
        <version>${jsch.bundle.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.javax.inject</artifactId>
        <version>${javax.inject.bundle.version}</version>
      </dependency>

      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-ext-jdk15on</artifactId>
        <version>${bcprov.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.oauth-commons</artifactId>
        <version>${net.oauth.bundle.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.java-xmlbuilder</artifactId>
        <version>${java-xmlbuilder.bundle.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.jzlib</artifactId>
        <version>${jzlib.bundle.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.servicemix.specs</groupId>
        <artifactId>org.apache.servicemix.specs.jsr250-1.0</artifactId>
        <version>${sericemix.specs.jsr250.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>${guice.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.inject.extensions</groupId>
        <artifactId>guice-assistedinject</artifactId>
        <version>${guice.version}</version>
      </dependency>

      <!-- Gson -->
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
      </dependency>

      <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>${jersey.version}</version>
      </dependency>
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore-osgi</artifactId>
        <version>${httpcore.version}</version>
        <scope>compile</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient-osgi</artifactId>
        <version>${httpclient.version}</version>
      </dependency>

      <!-- Groovy -->
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>${groovy.version}</version>
      </dependency>

      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-jsr223</artifactId>
        <version>${groovy.version}</version>
      </dependency>

      <!-- Guava -->
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>

      <!-- JSCH -->
      <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>${jsch.version}</version>
      </dependency>
      <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jzlib</artifactId>
        <version>${jzlib.version}</version>
      </dependency>

      <!-- JSch agentproxy -->
      <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch.agentproxy.connector-factory</artifactId>
        <version>${jsch.agentproxy.version}</version>
      </dependency>

      <!-- Logging Dependencies -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
      </dependency>

      <!-- Testing Dependencies -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>

      <dependency>
        <groupId>org.easymock</groupId>
        <artifactId>easymock</artifactId>
        <version>${easymock.version}</version>
      </dependency>

      <!-- jclouds Dependencies -->
      <dependency>
        <groupId>org.apache.jclouds</groupId>
        <artifactId>jclouds-core</artifactId>
        <version>${jclouds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds</groupId>
        <artifactId>jclouds-blobstore</artifactId>
        <version>${jclouds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds</groupId>
        <artifactId>jclouds-compute</artifactId>
        <version>${jclouds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds</groupId>
        <artifactId>jclouds-scriptbuilder</artifactId>
        <version>${jclouds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.api</groupId>
        <artifactId>ec2</artifactId>
        <version>${jclouds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.driver</groupId>
        <artifactId>jclouds-log4j</artifactId>
        <version>${jclouds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.driver</groupId>
        <artifactId>jclouds-slf4j</artifactId>
        <version>${jclouds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.driver</groupId>
        <artifactId>jclouds-jsch</artifactId>
        <version>${jclouds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.jclouds.api</groupId>
        <artifactId>chef</artifactId>
        <version>${jclouds.chef.version}</version>
      </dependency>
        <dependency>
        <groupId>org.apache.jclouds.common</groupId>
        <artifactId>googlecloud</artifactId>
        <version>${jclouds.version}</version>
      </dependency>

      <!-- Karaf Dependencies -->
      <dependency>
        <groupId>org.apache.karaf.shell</groupId>
        <artifactId>org.apache.karaf.shell.console</artifactId>
        <version>${karaf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.karaf.tooling.exam</groupId>
        <artifactId>org.apache.karaf.tooling.exam.options</artifactId>
        <version>${karaf.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.karaf.tooling.exam</groupId>
        <artifactId>org.apache.karaf.tooling.exam.container</artifactId>
        <version>${karaf.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.karaf</groupId>
        <artifactId>apache-karaf</artifactId>
        <version>${karaf.version}</version>
        <type>tar.gz</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <repositories>
    <repository>
      <id>apache-snapshots</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>sonatype</id>
      <url>https://oss.sonatype.org/content/repositories/releases/</url>
    </repository>
    <repository>
      <id>maven2-repository.dev.java.net</id>
      <name>Java.net Repository for Maven</name>
      <url>http://download.java.net/maven/2/</url>
      <layout>default</layout>
    </repository>
  </repositories>

  <profiles>
    <profile>
      <id>jenkins</id>
      <build>
        <plugins>
	  <!-- Make sure jclouds is built with the right JDK -->
	  <plugin>
	    <artifactId>maven-toolchains-plugin</artifactId>
	    <version>1.1</version>
	    <executions>
	      <execution>
	        <goals>
		  <goal>toolchain</goal>
	        </goals>
	      </execution>
	    </executions>
	    <configuration>
	      <toolchains>
                <jdk>
		  <version>${jdk.version}</version>
	        </jdk>
	      </toolchains>
	    </configuration>
	  </plugin>
	</plugins>
      </build>
    </profile>
  </profiles>
</project>
