<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.atlassian.stash</groupId>
        <artifactId>stash-parent</artifactId>
        <version>3.11.2-rc1</version>
    </parent>

    <artifactId>stash-plugins-parent</artifactId>
    <packaging>pom</packaging>
    <name>Atlassian Stash Plugins Parent</name>

    <modules>
        <module>analytics-whitelist</module>
        <module>ao-common</module>
        <module>audit</module>
        <module>auth-crowd-sso</module>
        <module>branch-permissions</module>
        <module>build-integration</module>
        <module>bundled-hooks</module>
        <module>comment-likes</module>
        <module>embcwd-admin-spi-impl</module>
        <module>hipchat-integration</module>
        <module>inbox</module>
        <module>jira-integration</module>
        <module>nav-links</module>
        <module>notification</module>
        <module>plugin-information-provider</module>
        <module>plugin-util</module>
        <module>pull-request-branch-deletion</module>
        <module>readme</module>
        <module>ref-restriction-api</module>
        <module>ref-restriction-spi</module>
        <module>repository-ref-sync</module>
        <module>rest-common</module>
        <module>rest</module>
        <module>sal</module>
        <module>scala</module>
        <module>scm-action-checks</module>
        <module>scm-git-api</module>
        <module>scm-git-common</module>
        <module>scm-git-rest</module>
        <module>scm-git</module>
        <module>ssh</module>
        <module>stp-integration</module>
        <module>velocity-helper</module>
        <module>bundled-plugins</module>
    </modules>

    <properties>
        <wadl-transform-xsl>src/main/resources/wadl-documentation.xsl</wadl-transform-xsl>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <!-- The following is required by sub-modules that generate wadl and html docs for rest endpoints -->
                <plugin>
                    <groupId>com.sun.jersey.contribs</groupId>
                    <artifactId>maven-wadl-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>generate</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                            <phase>prepare-package</phase>
                        </execution>
                    </executions>
                    <configuration>
                        <formatWadlFile>true</formatWadlFile>
                        <baseUri>http://example.com/rest/</baseUri>
                        <wadlGenerators>
                            <wadlGeneratorDescription>
                                <className>com.sun.jersey.server.wadl.generators.WadlGeneratorApplicationDoc</className>
                                <properties>
                                    <property>
                                        <name>applicationDocsFile</name>
                                        <value>${project.build.outputDirectory}/application-doc.xml</value>
                                    </property>
                                </properties>
                            </wadlGeneratorDescription>
                            <wadlGeneratorDescription>
                                <className>com.sun.jersey.server.wadl.generators.WadlGeneratorGrammarsSupport</className>
                                <properties>
                                    <property>
                                        <name>grammarsFile</name>
                                        <value>${project.build.outputDirectory}/application-grammars.xml</value>
                                    </property>
                                </properties>
                            </wadlGeneratorDescription>
                            <wadlGeneratorDescription>
                                <className>
                                    com.atlassian.plugins.rest.doclet.generators.resourcedoc.AtlassianWadlGeneratorResourceDocSupport
                                </className>
                                <properties>
                                    <property>
                                        <name>resourceDocFile</name>
                                        <value>${project.build.outputDirectory}/resourcedoc.xml</value>
                                    </property>
                                </properties>
                            </wadlGeneratorDescription>
                        </wadlGenerators>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>ch.qos.logback</groupId>
                            <artifactId>logback-classic</artifactId>
                            <version>${logback.libversion}</version>
                        </dependency>
                        <dependency>
                            <groupId>xerces</groupId>
                            <artifactId>xercesImpl</artifactId>
                            <version>2.9.1</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>check-dependencies</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <phase>validate</phase>
                            <configuration>
                                <rules>
                                    <bannedDependencies>
                                        <excludes>
                                            <exclude>com.google.collections:google-collections</exclude>
                                            <exclude>commons-logging:commons-logging:*:compile</exclude>
                                            <exclude>log4j:log4j</exclude>
                                            <exclude>quartz:quartz</exclude>
                                            <exclude>org.springframework:*:${spring.libversion}:*:compile</exclude>
                                            <!-- Blocking Spring 4 as a provided dependency is not possible because
                                                 scm-git relies on that version for its tests, and Maven complains
                                                 if a module depends on two different versions of the same artefact
                                                 (e.g. one with the provided scope and one with the test scope). -->
                                            <!--<exclude>org.springframework:*:${spring.libversion}:*:provided</exclude>-->
                                            <!--
                                              Only ban the scala-libary at compile level to prevent it from being
                                              bundled in plugins. All Scala dependencies should depend on
                                              org.scala-lang:scala-library with scope "provided".
                                            -->
                                            <exclude>org.scala-lang:scala-library:*:compile</exclude>
                                        </excludes>
                                        <message>Please check dependency:tree for banned dependencies</message>
                                        <searchTransitive>true</searchTransitive>
                                    </bannedDependencies>
                                </rules>
                                <fail>true</fail>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <profiles>
        <profile>
            <id>release</id>
            <properties>
                <release.javadoc.common.plugin.params>
                    -federate stash-api https://developer.atlassian.com/static/javadoc/stash/${project.version}/api/reference
                    -federationxml stash-api ${basedir}/../../api/target/apidocs/reference/current.xml
                    -federate stash-spi https://developer.atlassian.com/static/javadoc/stash/${project.version}/spi/reference
                    -federationxml stash-spi ${basedir}/../../spi/target/apidocs/reference/current.xml
                </release.javadoc.common.plugin.params>
            </properties>
        </profile>
    </profiles>
</project>
