<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright (C) 2012, the original authors
  ~
  ~  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/xsd/maven-4.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.cli</groupId>
    <artifactId>jclouds-cli-pom</artifactId>
    <packaging>pom</packaging>
    <name>jclouds :: cli</name>
    <version>1.5.0-beta.8</version>

    <url>https://github.com/jclouds/jclouds-cli</url>
    <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:git://github.com/jclouds/jclouds-cli.git</connection>
        <developerConnection>scm:git:ssh://git@github.com/jclouds/jclouds-cli.git</developerConnection>
        <url>http://github.com/jclouds/jclouds-cli</url>
    </scm>

    <developers>
        <developer>
            <id>iocanel</id>
            <name>Ioannis Canellos</name>
            <email>iocanel@gmail.com</email>
            <url>http://iocanel.blogspot.com</url>
        </developer>
        <developer>
            <id>abayer</id>
            <name>Andew Bayer</name>
            <email>abayer@apache.org</email>
            <url>http://andrewbayer.com</url>
        </developer>
    </developers>

    <modules>
        <module>branding</module>
        <module>assembly</module>
        <module>runner</module>
    </modules>

    <properties>
        <!-- Karaf Version Dependencies -->
        <karaf.version>2.2.7</karaf.version>
        <pax.url.version>1.2.8</pax.url.version>
        <pax.logging.version>1.6.5</pax.logging.version>
        <felix.configadmin.version>1.2.8</felix.configadmin.version>
        <aries.util.version>0.3</aries.util.version>
        <aries.proxy.version>0.3</aries.proxy.version>
        <aries.blueprint.version>0.3.1</aries.blueprint.version>
        <aries.jmx.version>0.3</aries.jmx.version>
        <asm.bundle.version>3.3.1_1</asm.bundle.version>
        <felix.fileinstall.version>3.2.2</felix.fileinstall.version>
        <jclouds.karaf.version>1.5.0-beta.8</jclouds.karaf.version>
        <log4j.version>1.2.17</log4j.version>
        <slf4j.version>1.6.6</slf4j.version>
        <!-- Plugin Versions -->
        <maven-antrun-plugin.version>1.7</maven-antrun-plugin.version>
        <maven-assembly-plugin.version>2.2.1</maven-assembly-plugin.version>
        <maven-bundle-plugin.version>2.1.0</maven-bundle-plugin.version>
        <maven-compiler-plugin.version>2.0.2</maven-compiler-plugin.version>
        <maven-release-plugin.version>2.2.2</maven-release-plugin.version>
        <maven-resources-plugin.version>2.4.2</maven-resources-plugin.version>
        <build-helper-maven-plugin.version>1.5</build-helper-maven-plugin.version>
    </properties>

    <build>
        <plugins>
            <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>org.jclouds.cli.${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>
                    </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>
                    <preparationGoals>clean install</preparationGoals>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <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>
        <!-- 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>
    </profiles>

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

</project>
