<?xml version="1.0" encoding="UTF-8"?>
<!--
#=======================================================================
# Copyright (c) 2011, 2016 - 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.ecview.extension.api</groupId>
    <artifactId>org.eclipse.osbp.ecview.extension.api.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.ecview.extension.api</module>
        <module>org.eclipse.osbp.ecview.extension.editparts</module>
        <module>org.eclipse.osbp.ecview.extension.grid.editparts</module>
        <module>org.eclipse.osbp.ecview.extension.grid.model</module>
        <module>org.eclipse.osbp.ecview.extension.grid.model.edit</module>
        <module>org.eclipse.osbp.ecview.extension.model</module>
        <module>org.eclipse.osbp.ecview.extension.model.edit</module>
        <module>org.eclipse.osbp.ecview.extension.api.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>
                        <filters>
                            <filter>
                                <type>eclipse-plugin</type>
                                <id>org.apache.aries.transaction.manager</id>
                                <restrictTo>
                                    <!--  use a range that does not exist, we can not mix removeall and versionRange -->
                                    <versionRange>[0.5.0,0.5.1)</versionRange>
                                </restrictTo>
                            </filter>
                        </filters>
                        <resolver>p2</resolver>
                        <pomDependencies>consider</pomDependencies>
                        <environments>
                            <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>
