<?xml version="1.0" encoding="UTF-8"?>
<!--


    Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>

    ====================================================================
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    ====================================================================

-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.jclouds</groupId>
        <artifactId>jclouds-project</artifactId>
        <version>1.1.0-SNAPSHOT</version>
        <relativePath>../../project/pom.xml</relativePath>
    </parent>
    <groupId>org.jclouds.api</groupId>
    <artifactId>virtualbox</artifactId>
    <name>jcloud virtualbox api</name>
    <description>jclouds components to access an implementation of virtualbox</description>
    <packaging>bundle</packaging>

    <properties>
        <test.virtualbox.endpoint>http://localhost:18083/</test.virtualbox.endpoint>
        <test.virtualbox.apiversion>4.1.0r73009</test.virtualbox.apiversion>
        <test.virtualbox.identity>administrator</test.virtualbox.identity>
        <test.virtualbox.credential>12345</test.virtualbox.credential>
    </properties>

    <repositories>
        <repository>
            <id>temporary</id>
            <url>https://jclouds.googlecode.com/svn/repo</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>sonatype-nexus-snapshots</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>  
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.jclouds</groupId>
            <artifactId>jclouds-compute</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.virtualbox</groupId>
            <artifactId>vboxjws</artifactId>
            <version>${test.virtualbox.apiversion}</version>
        </dependency>
        <dependency>
            <groupId>org.jclouds.api</groupId>
            <artifactId>byon</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.jponge</groupId>
            <artifactId>lzma-java</artifactId>
            <version>1.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-security</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jclouds</groupId>
            <artifactId>jclouds-core</artifactId>
            <version>${project.version}</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jclouds</groupId>
            <artifactId>jclouds-compute</artifactId>
            <version>${project.version}</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jclouds.driver</groupId>
            <artifactId>jclouds-sshj</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jclouds.driver</groupId>
            <artifactId>jclouds-slf4j</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>0.9.29</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <profiles>
        <profile>
            <id>live</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.8.1</version>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.maven.surefire</groupId>
                                <artifactId>surefire-testng</artifactId>
                                <version>2.8.1</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <id>integration</id>
                                <phase>integration-test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <configuration>
                                    <systemProperties>
                                        <property>
                                            <name>test.virtualbox.endpoint</name>
                                            <value>${test.virtualbox.endpoint}</value>
                                        </property>
                                        <property>
                                            <name>test.virtualbox.apiversion</name>
                                            <value>${test.virtualbox.apiversion}</value>
                                        </property>
                                        <property>
                                            <name>test.virtualbox.identity</name>
                                            <value>${test.virtualbox.identity}</value>
                                        </property>
                                        <property>
                                            <name>test.virtualbox.credential</name>
                                            <value>${test.virtualbox.credential}</value>
                                        </property>
                                    </systemProperties>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>    
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                        <Export-Package>org.jclouds.virtualbox.*;version="${project.version}"</Export-Package>
                        <Import-Package>org.jclouds.*;version="${project.version}",*</Import-Package>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
