<?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.7</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.7</jclouds.karaf.version>
        <log4j.version>1.2.17</log4j.version>
        <slf4j.version>1.6.6</slf4j.version>
        <!-- Plugin Versions -->
        <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>
