<?xml version="1.0" encoding="UTF-8"?>
<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>

    <prerequisites>
        <maven>3.0.3</maven>
    </prerequisites>

    <groupId>org.eclipse.gemini.blueprint</groupId>
    <artifactId>gemini-blueprint</artifactId>
    <!-- Note: When updating the version, ensure it is a valid OSGi version -->
    <version>2.0.0.BUILD-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Gemini Blueprint</name>
    <url>http://www.eclipse.org/gemini/blueprint/</url>
    <description>
        Eclipse Gemini Blueprint project makes it easy to build Java applications that run in an OSGi framework. By
        using Gemini Blueprint, applications benefit from using a
        better separation of modules, the ability to dynamically add, remove, and update modules in a running system,
        the ability to deploy multiple versions of a module
        simultaneously (and have clients automatically bind to the appropriate one), and a dynamic service model.
    </description>
    <inceptionYear>2006</inceptionYear>

    <properties>
        <!-- Source file encoding -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <!-- Spring version -->
        <spring.maven.artifact.version>3.1.1.RELEASE</spring.maven.artifact.version>
        <spring.base.version>3.0.0</spring.base.version>

        <symName.prefix>org.eclipse.gemini.blueprint</symName.prefix>
        <spring.osgi.symbolic.name>${project.groupId}.${project.artifactId}</spring.osgi.symbolic.name>

        <spring.osgi.license.loc>..</spring.osgi.license.loc>

        <!-- other properties -->
        <slf4j.version>1.7.5</slf4j.version>
        <logback.version>1.0.13</logback.version>
        <env.buildPlan></env.buildPlan>
        <env.buildNumber></env.buildNumber>
        <!-- change that to gitVersion and add a way to get git version of the build -->
        <env.svnRevision></env.svnRevision>

        <!-- platform versions -->
        <equinox.ver>3.6.2.R36x_v20110210</equinox.ver>
        <!-- Knopflerfish 3.5 -->
        <kf.ver>5.3.3</kf.ver>
        <felix.ver>2.0.5</felix.ver>

        <!-- javadoc configuration -->
        <javadoc.loc>${basedir}/docs/src/javadoc</javadoc.loc>

        <clover.ver>3.1.4</clover.ver>
        <clover.argLine></clover.argLine>
        <clover.skip>false</clover.skip>

        <findbugs.skip>false</findbugs.skip>

        <!-- security options for integration testing -->
        <security.argLine></security.argLine>
        <policy.url>..${file.separator}policy.all</policy.url>

        <!-- bundlor settings -->
        <bundlor.enabled>true</bundlor.enabled>
        <!-- common version ranges -->
        <spring.version.range.nq>[${spring.base.version},4.0)</spring.version.range.nq>
        <spring.version.range>"${spring.version.range.nq}"</spring.version.range>
        <gemini.blueprint.version.range.nq>[${project.version},${project.version}]</gemini.blueprint.version.range.nq>
        <gemini.blueprint.version.range>"${gemini.blueprint.version.range.nq}"</gemini.blueprint.version.range>
        <logging.version.range>"[1.0,2.0)"</logging.version.range>
    </properties>

    <!-- ============================================= -->
    <!-- Basic configuration: JIRA, SCM, CI, devs etc. -->
    <!-- ============================================= -->

    <issueManagement>
        <system>Bugzilla</system>
        <url>http://bugs.eclipse.org/bugs/buglist.cgi?product=Gemini.Blueprint</url>
    </issueManagement>

    <!--<ciManagement>-->
    <!--<system>bamboo</system>-->
    <!--<url>http://build.springframework.org/browse/OSGI-TRUNK</url>-->
    <!--<notifiers>-->
    <!--<notifier>-->
    <!--<type>mail</type>-->
    <!--<configuration>-->
    <!--<address>adrian.colyer@SpringSource.com</address>-->
    <!--</configuration>-->
    <!--</notifier>-->
    <!--<notifier>-->
    <!--<type>mail</type>-->
    <!--<configuration>-->
    <!--<address>costin.leau@SpringSource.com</address>-->
    <!--</configuration>-->
    <!--</notifier>-->
    <!--</notifiers>-->
    <!--</ciManagement>-->

    <scm>
        <connection>scm:git://git.eclipse.org/gitroot/gemini.blueprint/org.eclipse.gemini.blueprint.git</connection>
        <developerConnection>
            ssh://${user.name}@git.eclipse.org/gitroot/gemini.blueprint/org.eclipse.gemini.blueprint.git
        </developerConnection>
    </scm>

    <developers>
        <developer>
            <id>adrian-colyer</id>
            <name>Adrian Colyer</name>
            <email>adrian.colyer at SpringSource.com</email>
            <organization>SpringSource, division of VMware</organization>
            <organizationUrl>http://www.SpringSource.com</organizationUrl>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>0</timezone>
        </developer>
        <developer>
            <id>jconstantine</id>
            <name>Hal Hildebrand</name>
            <email>hal.hildebrand at oracle.com</email>
            <organization>Oracle</organization>
            <organizationUrl>http://www.oracle.com</organizationUrl>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>-8</timezone>
        </developer>
        <developer>
            <id>costin_leau</id>
            <name>Costin Leau</name>
            <email>costin.leau at SpringSource.com</email>
            <organization>SpringSource, division of VMware</organization>
            <organizationUrl>http://www.SpringSource.com</organizationUrl>
            <roles>
                <role>Project Admin</role>
                <role>Developer</role>
            </roles>
            <timezone>+2</timezone>
        </developer>
        <developer>
            <id>andypiper</id>
            <name>Andy Piper</name>
            <email>andy at oracle.com</email>
            <organization>Oracle</organization>
            <organizationUrl>http://www.oracle.com</organizationUrl>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>0</timezone>
        </developer>

    </developers>

    <licenses>
        <license>
            <name>Eclipse Public License, Version 1.0</name>
            <url>http://www.eclipse.org/legal/epl-v10.html</url>
        </license>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
        </license>
    </licenses>

    <!-- =================================================== -->
    <!-- Project Modules, Dependencies, Plugins and Profiles -->
    <!-- =================================================== -->

    <!-- modules for Spring-OSGi -->
    <modules>
        <module>mock</module>
        <module>io</module>
        <module>core</module>
        <module>extender</module>
        <module>test-support</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <!-- Gemini Blueprint -->
            <dependency>
                <groupId>org.eclipse.gemini.blueprint</groupId>
                <artifactId>gemini-blueprint-mock</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.gemini.blueprint</groupId>
                <artifactId>gemini-blueprint-io</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.gemini.blueprint</groupId>
                <artifactId>gemini-blueprint-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.gemini.blueprint</groupId>
                <artifactId>gemini-blueprint-extender</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.gemini.blueprint</groupId>
                <artifactId>gemini-blueprint-test</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.maven.artifact.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>aopalliance</groupId>
                        <artifactId>aopalliance</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.maven.artifact.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.maven.artifact.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.maven.artifact.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.maven.artifact.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.maven.artifact.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.aopalliance</groupId>
                <artifactId>com.springsource.org.aopalliance</artifactId>
                <version>1.0.0</version>
            </dependency>

            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.compendium</artifactId>
                <version>4.2.0</version>
            </dependency>

        </dependencies>

    </dependencyManagement>

    <!-- shared dependencies across modules -->
    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <version>4.2.0</version>
        </dependency>

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <!-- junit -->
        <dependency>
            <groupId>org.junit</groupId>
            <artifactId>com.springsource.org.junit</artifactId>
            <version>4.9.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>1.2_Java1.3</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.9.5</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.easytesting</groupId>
            <artifactId>fest-assert</artifactId>
            <version>1.4</version>
            <scope>test</scope>
        </dependency>

        <!-- commons-logging in slf4j wrapper -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${slf4j.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>

        <!--<dependency>-->
            <!--<groupId>org.slf4j</groupId>-->
            <!--<artifactId>slf4j-log4j12</artifactId>-->
            <!--<version>${slf4j.version}</version>-->
            <!--<scope>provided</scope>-->
            <!--<exclusions>-->
                <!--<exclusion>-->
                    <!--<groupId>log4j</groupId>-->
                    <!--<artifactId>log4j</artifactId>-->
                <!--</exclusion>-->
            <!--</exclusions>-->
        <!--</dependency>-->

        <!--<dependency>-->
            <!--<groupId>org.apache.log4j</groupId>-->
            <!--<artifactId>com.springsource.org.apache.log4j</artifactId>-->
            <!--<version>1.2.16</version>-->
        <!--</dependency>-->

        <!--<dependency>-->
            <!--<groupId>log4j</groupId>-->
            <!--<artifactId>log4j</artifactId>-->
            <!--<version>1.2.16</version>-->
            <!--<scope>test</scope>-->
        <!--</dependency>-->

    </dependencies>

    <build>
        <extensions>
            <extension>
                <groupId>org.springframework.build.aws</groupId>
                <artifactId>org.springframework.build.aws.maven</artifactId>
                <version>2.0.0.RELEASE</version>
            </extension>
        </extensions>

        <resources>
            <resource>
                <filtering>true</filtering>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>git.properties</exclude>
                </excludes>
            </resource>
        </resources>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>2.1.5</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.6</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>2.5</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <version>2.9</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.16</version>
                    <dependencies>
                        <!-- force surefire to use new junit 4.7+ runner, it would normally auto detect this -->
                        <!-- but since we're not using the official junit dependency it is unable to do so.-->
                        <!-- - this makes things like @Ignore work. -->
                        <dependency>
                            <groupId>org.apache.maven.surefire</groupId>
                            <artifactId>surefire-junit47</artifactId>
                            <version>2.16</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.9.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jxr-plugin</artifactId>
                    <version>2.3</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jdepend-maven-plugin</artifactId>
                    <version>2.0-beta-2</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.7</version>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>maven-clover2-plugin</artifactId>
                    <version>${clover.ver}</version>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.virgo.bundlor</groupId>
                    <artifactId>org.eclipse.virgo.bundlor.maven</artifactId>
                    <version>1.1.2.RELEASE</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>3.0.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>2.16</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>2.7</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.eclipse.virgo.bundlor</groupId>
                <artifactId>org.eclipse.virgo.bundlor.maven</artifactId>
                <executions>
                    <execution>
                        <id>bundlor</id>
                        <goals>
                            <goal>bundlor</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <properties>
                        <bundle.description>${project.description}</bundle.description>
                    </properties>
                    <manifestTemplatePath>${basedir}/template.mf</manifestTemplatePath>
                    <enabled>${bundlor.enabled}</enabled>
                    <failOnWarnings>false</failOnWarnings>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <debug>true</debug>
                    <fork>true</fork>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
                            <Bundle-Name>${project.artifactId}</Bundle-Name>
                            <Bundle-Version>${project.version}</Bundle-Version>
                            <Bundle-SymbolicName>${spring.osgi.symbolic.name}.source</Bundle-SymbolicName>
                            <Bundle-Vendor>Eclipse Foundation</Bundle-Vendor>
                            <Bundle-DocURL>http://www.eclipse.org/gemini/blueprint/</Bundle-DocURL>
                            <!--<Bundle-Description>${bundle.description}</Bundle-Description>-->
                            <Bundle-License>http://www.opensource.org/licenses/eclipse-1.0.php, http://www.opensource.org/licenses/apache2.0.php</Bundle-License>
                            <Implementation-Title>Eclipse Gemini Blueprint</Implementation-Title>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Implementation-Vendor>Eclipse Foundation</Implementation-Vendor>
                            <Implementation-Vendor-Id>org.eclipse.gemini.blueprint</Implementation-Vendor-Id>
                            <Gemini-Blueprint-Version>${project.version}</Gemini-Blueprint-Version>
                            <Spring-Version>${spring.maven.artifact.version}</Spring-Version>
                            <Git-Revision>${git.commit.id.describe}</Git-Revision>
                            <Eclipse-SourceBundle>${spring.osgi.symbolic.name};version="${project.version}";roots:="."</Eclipse-SourceBundle>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

            <!-- clover plug-in -->
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>maven-clover2-plugin</artifactId>
                <configuration>
                    <licenseLocation>${env.clover.licenseLocation}</licenseLocation>
                    <generatePdf>false</generatePdf>
                    <generateXml>true</generateXml>
                    <generateHtml>true</generateHtml>
                    <generateHistorical>false</generateHistorical>
                    <!-- saving history is problematic since each module would override
                    the previous unless a different folder is used for the root
                    <historyDir>${basedir}/clover/history</historyDir>
                    -->
                    <jdk>1.5</jdk>
                    <includesTestSourceRoots>false</includesTestSourceRoots>
                    <skip>${clover.skip}</skip>

                    <!-- exclusions -->
                    <excludes>
                        <!-- integration tests -->
                        <exclude>org/eclipse/gemini/blueprint/iandt/**</exclude>
                        <exclude>org/eclipse/gemini/blueprint/test/parsing/**</exclude>
                        <!-- addressed in 1.2 -->
                        <exclude>org/eclipse/gemini/blueprint/compendium/internal/**</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <configuration>
                    <reportPlugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-jxr-plugin</artifactId>
                            <configuration>
                                <aggregate>true</aggregate>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-surefire-report-plugin</artifactId>
                            <configuration>
                                <aggregate>true</aggregate>
                            </configuration>
                        </plugin>

                        <!-- =============== -->
                        <!--     Javadocs    -->
                        <!-- =============== -->
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <configuration>
                                <aggregate>true</aggregate>
                                <stylesheetfile>${javadoc.loc}/javadoc.css</stylesheetfile>
                                <overview>${javadoc.loc}/overview.html</overview>
                                <groups>
                                    <group>
                                        <title>OSGi Blueprint Service</title>
                                        <packages>org.osgi.service.blueprint*</packages>
                                    </group>
                                    <group>
                                        <title>Eclipse Gemini Blueprint Core</title>
                                        <packages>org.eclipse.gemini.blueprint*</packages>
                                    </group>
                                    <group>
                                        <title>Eclipse Gemini Blueprint Extender</title>
                                        <packages>org.eclipse.gemini.blueprint.extender*</packages>
                                    </group>
                                    <group>
                                        <title>Eclipse Gemini Blueprint IO</title>
                                        <packages>org.eclipse.gemini.blueprint.io*</packages>
                                    </group>
                                    <group>
                                        <title>Eclipse Gemini Blueprint Integration Testing Framework</title>
                                        <packages>org.eclipse.gemini.blueprint.test*</packages>
                                    </group>
                                    <group>
                                        <title>Eclipse Gemini Blueprint Mock</title>
                                        <packages>org.eclipse.gemini.blueprint.mock*</packages>
                                    </group>
                                </groups>
                                <excludePackageNames>
                                    *internal:org.eclipse.gemini.blueprint.config:org.eclipse.gemini.blueprint.compendium.config:org.eclipse.gemini.blueprint.blueprint.config:org.eclipse.gemini.blueprint.blueprint.compendium.cm.config:org.eclipse.gemini.blueprint.iandt*
                                </excludePackageNames>

                                <breakiterator>true</breakiterator>
                                <quiet>true</quiet>
                                <verbose>false</verbose>
                                <show>protected</show>
                                <source>1.5</source>
                                <links>
                                    <link>http://download.oracle.com/javase/1.5.0/docs/api/</link>
                                    <link>http://static.springsource.org/spring/docs/3.0.x/javadoc-api/</link>
                                    <link>http://www2.osgi.org/javadoc/r4/</link>
                                    <link>http://asm.objectweb.org/asm223/javadoc/user</link>
                                    <link>http://cglib.sourceforge.net/apidocs</link>
                                    <link>http://logging.apache.org/log4j/docs/api/</link>
                                    <link>http://jakarta.apache.org/commons/logging/apidocs/</link>
                                    <link>http://junit.org/junit/javadoc/4.9.0/</link>
                                    <link>http://aopalliance.sourceforge.net/doc/</link>
                                </links>
                            </configuration>
                        </plugin>

                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-project-info-reports-plugin</artifactId>
                        </plugin>

                        <!-- ============== -->
                        <!--     FindBugs   -->
                        <!-- ============== -->
                        <plugin>
                            <groupId>org.codehaus.mojo</groupId>
                            <artifactId>findbugs-maven-plugin</artifactId>
                            <configuration>
                                <!--
                                <xmlOutput>true</xmlOutput>
                                <xmlOutputDirectory>target</xmlOutputDirectory>
                                -->
                                <threshold>Normal</threshold>
                                <effort>Default</effort>
                                <!--
                                <debug>true</debug>
                                <relaxed>true</relaxed>
                                -->
                                <skip>${findbugs.skip}</skip>
                            </configuration>
                        </plugin>

                        <!-- =========== -->
                        <!--     PMD     -->
                        <!-- =========== -->

                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-pmd-plugin</artifactId>
                            <configuration>
                                <targetJdk>1.5</targetJdk>
                            </configuration>
                        </plugin>

                        <!-- ============== -->
                        <!--     jDepend    -->
                        <!-- ============== -->
                        <plugin>
                            <groupId>org.codehaus.mojo</groupId>
                            <artifactId>jdepend-maven-plugin</artifactId>
                        </plugin>
                    </reportPlugins>
                </configuration>
            </plugin>


            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
                <version>2.1.5</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>revision</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <!-- that's the default value, you don't have to set it -->
                    <prefix>git</prefix>
                    <!-- that's the default value -->
                    <dateFormat>dd.MM.yyyy '@' HH:mm:ss z</dateFormat>
                    <!-- true is default here, it prints some more information during the build -->
                    <verbose>fasle</verbose>
                    <!--
                        If you'd like to tell the plugin where your .git directory is,
                        use this setting, otherwise we'll perform a search trying to
                        figure out the right directory. It's better to add it explicit IMHO.
                    -->
                    <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>

                    <!-- ALTERNATE SETUP - GENERATE FILE -->
                    <!--
                        If you want to keep git information, even in your WAR file etc,
                        use this mode, which will generate a properties file (with filled out values)
                        which you can then normally read using new Properties().load(/**/)
                    -->

                    <!--
                        this is true by default; You may want to set this to false, if the plugin should run inside a
                        <packaging>pom</packaging> project. Most projects won't need to override this property.

                        For an use-case for this kind of behaviour see: https://github.com/ktoso/maven-git-commit-id-plugin/issues/21
                    -->
                    <skipPoms>true</skipPoms>

                    <!-- this is false by default, forces the plugin to generate the git.properties file -->
                    <generateGitPropertiesFile>true</generateGitPropertiesFile>

                    <!-- The path for the to be generated properties file, it's relative to ${project.basedir} -->
                    <generateGitPropertiesFilename>src/main/resources/git.properties</generateGitPropertiesFilename>

                    <!-- true by default, controls whether the plugin will fail when no .git directory is found, when set to false the plugin will just skip execution -->
                    <!-- @since 2.0.4 -->
                    <failOnNoGitDirectory>false</failOnNoGitDirectory>

                    <!-- @since 2.1.0 -->
                    <!--
                        read up about git-describe on the in man, or it's homepage - it's a really powerful versioning helper
                        and the recommended way to use git-commit-id-plugin. The configuration bellow is optional,
                        by default describe will run "just like git-describe on the command line", even though it's a JGit reimplementation.
                    -->
                    <gitDescribe>
                        <!-- don't generate the describe property -->
                        <skip>false</skip>
                        <!--
                            if no tag was found "near" this commit, just print the commit's id instead,
                            helpful when you always expect this field to be not-empty
                        -->
                        <always>false</always>
                        <!--
                             how many chars should be displayed as the commit object id?
                             7 is git's default,
                             0 has a special meaning (see end of this README.md),
                             and 40 is the maximum value here
                        -->
                        <abbrev>7</abbrev>

                        <!-- when the build is triggered while the repo is in "dirty state", append this suffix -->
                        <dirty>-dirty</dirty>
                        <!--
                             always print using the "tag-commits_from_tag-g_commit_id-maybe_dirty" format, even if "on" a tag.
                             The distance will always be 0 if you're "on" the tag.
                        -->
                        <forceLongFormat>false</forceLongFormat>
                    </gitDescribe>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <!-- profiles for equinox, knoplerfish, and felix                 -->
    <!-- to use these profiles invoke maven with -Pprofile-name, e.g. -->
    <!-- mvn -Pfelix test                                             -->
    <profiles>
        <profile>
            <id>equinox</id>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.osgi</groupId>
                    <artifactId>org.eclipse.osgi</artifactId>
                    <version>${equinox.ver}</version>
                    <type>jar</type>
                    <scope>provided</scope>
                </dependency>
            </dependencies>
            <properties>
                <osgi.test.platform>org.eclipse.gemini.blueprint.test.platform.EquinoxPlatform</osgi.test.platform>
                <log4j.ignoreTCL>true</log4j.ignoreTCL>
            </properties>
        </profile>

        <profile>
            <id>knopflerfish</id>
            <dependencies>
                <dependency>
                    <groupId>org.knopflerfish</groupId>
                    <artifactId>framework</artifactId>
                    <version>${kf.ver}</version>
                    <type>jar</type>
                    <scope>provided</scope>
                </dependency>
            </dependencies>
            <properties>
                <osgi.test.platform>org.eclipse.gemini.blueprint.test.platform.KnopflerfishPlatform</osgi.test.platform>
                <log4j.ignoreTCL>true</log4j.ignoreTCL>
                <org.knopflerfish.osgi.setcontextclassloader>true</org.knopflerfish.osgi.setcontextclassloader>
            </properties>
        </profile>

        <profile>
            <id>felix</id>
            <dependencies>
                <dependency>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>org.apache.felix.main</artifactId>
                    <version>${felix.ver}</version>
                    <type>jar</type>
                    <scope>provided</scope>
                    <!-- required to prevent felix to pull in stuff -->
                    <exclusions>
                        <exclusion>
                            <groupId>org.apache.felix</groupId>
                            <artifactId>org.apache.felix.framework</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>org.apache.felix</groupId>
                            <artifactId>org.apache.felix.shell</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>org.apache.felix</groupId>
                            <artifactId>org.apache.felix.shell.tui</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>org.apache.felix</groupId>
                            <artifactId>org.apache.felix.bundlerepository</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
                <!-- include the OSGi jar to allow PermissionAdmin API to be used -->
                <dependency>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>org.osgi.core</artifactId>
                    <version>1.0.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <osgi.test.platform>org.eclipse.gemini.blueprint.test.platform.FelixPlatform</osgi.test.platform>
                <log4j.ignoreTCL>true</log4j.ignoreTCL>
            </properties>
        </profile>

        <!-- integration testing profile -->
        <profile>
            <id>it</id>
            <activation>
                <property>
                    <name>env-test</name>
                </property>
            </activation>
            <modules>
                <module>integration-tests</module>
            </modules>
        </profile>

        <!-- Java 2 security enabled profile -->
        <profile>
            <id>security</id>
            <properties>
                <security.argLine>-Djava.security.manager -Djava.security.policy=${policy.url}</security.argLine>
            </properties>
        </profile>

        <!-- clover profile -->
        <profile>
            <id>clover</id>
            <properties>
                <clover.enabled>true</clover.enabled>
                <spring.decorate.osgi.import>!com_cenqua_clover*,${spring.osgi.import}</spring.decorate.osgi.import>
                <clover.argLine>
                    -Xbootclasspath/a:"${settings.localRepository}${file.separator}com${file.separator}cenqua${file.separator}clover${file.separator}clover${file.separator}${clover.ver}${file.separator}clover-${clover.ver}.jar
                    -Dansi.color"
                </clover.argLine>
            </properties>

            <dependencies>
                <dependency>
                    <groupId>com.cenqua.clover</groupId>
                    <artifactId>clover</artifactId>
                    <version>${clover.ver}</version>
                    <type>jar</type>
                    <scope>provided</scope>
                </dependency>
            </dependencies>

        </profile>
    </profiles>


    <!-- ======================================= -->
    <!--          Website and reporting          -->
    <!-- ======================================= -->

    <distributionManagement>
        <downloadUrl>http://www.eclipse.org/gemini/blueprint/download/</downloadUrl>
        <site>
            <id>gemini.blueprint.home</id>
            <name>www.eclipse.org/gemini/blueprint</name>
            <url>http://www.eclipse.org/gemini/blueprint/</url>
        </site>
        <!-- TODO: Need to participate in Gemini maven repo
        <repository>
            <id>zodiac-milestone</id>
            <name>Zodiac Milestone Repository</name>
            <url>s3://zodiac.springsource.com/maven/bundles/milestone</url>
        </repository>
        <snapshotRepository>
            <id>zodiac-snapshot</id>
            <name>Zodiac Snapshot Repository</name>
            <url>s3://zodiac.springsource.com/maven/bundles/snapshot</url>
        </snapshotRepository> -->
    </distributionManagement>


    <!-- ================================================ -->
    <!--            Repository Configuration              -->
    <!-- ================================================ -->

    <pluginRepositories>
        <pluginRepository>
            <id>maven-repo</id>
            <name>maven repo</name>
            <url>http://repo1.maven.org/maven2/</url>
        </pluginRepository>

        <pluginRepository>
            <id>com.springsource.repository.bundles.release</id>
            <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
            <url>http://repository.springsource.com/maven/bundles/release/</url>
        </pluginRepository>

        <pluginRepository>
            <id>com.springsource.repository.bundles.milestone</id>
            <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Milestones</name>
            <url>http://repository.springsource.com/maven/bundles/milestone</url>
        </pluginRepository>

        <pluginRepository>
            <id>com.springsource.repository.bundles.snapshot</id>
            <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Snapshots</name>
            <url>http://repository.springsource.com/maven/bundles/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>

        <pluginRepository>
            <id>com.springsource.repository.bundles.external</id>
            <name>SpringSource Enterprise Bundle Repository - External Bundle Release</name>
            <url>http://repository.springsource.com/maven/bundles/external</url>
        </pluginRepository>

        <pluginRepository>
            <id>eclipse.virgo.build.bundles.release</id>
            <name>Eclipse Virgo Build</name>
            <url>http://build.eclipse.org/rt/virgo/maven/bundles/release</url>
        </pluginRepository>

    </pluginRepositories>

    <repositories>
        <repository>
            <id>com.springsource.repository.bundles.release</id>
            <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
            <url>http://repository.springsource.com/maven/bundles/release/</url>
        </repository>

        <repository>
            <id>com.springsource.repository.bundles.external</id>
            <name>SpringSource Enterprise Bundle Repository - External Bundle Release</name>
            <url>http://repository.springsource.com/maven/bundles/external</url>
        </repository>

        <repository>
            <id>com.springsource.repository.bundles.milestone</id>
            <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Milestones</name>
            <url>http://repository.springsource.com/maven/bundles/milestone</url>
        </repository>

        <repository>
            <id>com.springsource.repository.bundles.snapshot</id>
            <name>SpringSource Enterprise Bundle Repository - Snapshots</name>
            <url>http://repository.springsource.com/maven/bundles/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

        <repository>
            <id>spring-release</id>
            <name>Spring Portfolio Release Repository</name>
            <url>http://maven.springframework.org/release</url>
        </repository>

        <repository>
            <id>spring-external</id>
            <name>Spring Portfolio External Repository</name>
            <url>http://maven.springframework.org/external</url>
        </repository>

        <repository>
            <id>spring-milestone</id>
            <name>Spring Portfolio Milestone Repository</name>
            <url>http://maven.springframework.org/milestone</url>
        </repository>

        <repository>
            <id>spring-ext</id>
            <name>Spring External Dependencies Repository</name>
            <url>http://springframework.svn.sourceforge.net/svnroot/springframework/repos/repo-ext/</url>
        </repository>

        <!-- used when building against Spring snapshots -->
        <repository>
            <id>spring-snapshot</id>
            <name>Spring Portfolio Milestone Repository</name>
            <url>http://maven.springframework.org/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

        <repository>
            <id>knopflerfish-repo</id>
            <name>Official Knopflerfish Repository</name>
            <url>http://www.knopflerfish.org/maven2/</url>
        </repository>

        <!--todo: is this still needed -->
        <repository>
            <id>i21-s3-osgi-repo</id>
            <name>i21 osgi artifacts repo</name>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <url>http://maven.springframework.org/osgi</url>
        </repository>

        <repository>
            <id>eclipse.virgo.build.bundles.release</id>
            <name>Eclipse Virgo Build</name>
            <url>http://build.eclipse.org/rt/virgo/maven/bundles/release</url>
        </repository>
    </repositories>

</project>
