<?xml version="1.0" encoding="UTF-8"?>
<!--
#=======================================================================
# Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
# Loetz GmbH&Co.KG - initial API and implementation 
#=======================================================================
-->
<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.eclipse.osbp.releng.maven</groupId>
        <artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
        <version>0.9.0-SNAPSHOT</version>
        <relativePath/>
    </parent>

    <groupId>org.eclipse.osbp.blob</groupId>
    <artifactId>org.eclipse.osbp.blob.aggregator</artifactId>
    <version>0.9.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <url>${osbp.site.repository.url}</url>
    <scm>
        <url>${osbp.scm.url}</url>
        <connection>${osbp.scm.connection}</connection>
        <developerConnection>${osbp.scm.connection.dev}</developerConnection>
        <tag>HEAD</tag>
    </scm>
    <distributionManagement>
        <site>
            <id>gh-pages</id>
            <name>OSBP GitHub Pages</name>
            <url>${distribution.site.url}</url>
        </site>
    </distributionManagement>

    <properties>
        
		<osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
    </properties>

    <modules>
        <module>org.eclipse.osbp.blob</module>
        <module>org.eclipse.osbp.blob.feature</module>
    </modules>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>target-platform-configuration</artifactId>
                    <version>${tycho-version}</version>
                    <configuration>
                        <resolver>p2</resolver>
                        <pomDependencies>consider</pomDependencies>
                        <environments>
                            <environment>
                                <os>win32</os>
                                <ws>win32</ws>
                                <arch>x86</arch>
                            </environment>
                            <environment>
                                <os>win32</os>
                                <ws>win32</ws>
                                <arch>x86_64</arch>
                            </environment>
                            <environment>
                                <os>linux</os>
                                <ws>gtk</ws>
                                <arch>x86</arch>
                            </environment>
                            <environment>
                                <os>linux</os>
                                <ws>gtk</ws>
                                <arch>x86_64</arch>
                            </environment>
                            <environment>
                                <os>macosx</os>
                                <ws>cocoa</ws>
                                <arch>x86_64</arch>
                            </environment>
                        </environments>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
