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

    <parent>
        <groupId>com.atlassian.pom</groupId>
        <artifactId>closedsource-pom</artifactId>
        <version>5.0.29</version>
    </parent>

    <groupId>com.atlassian.audit</groupId>
    <artifactId>atlassian-audit</artifactId>
    <version>1.16.3</version>
    <packaging>pom</packaging>

    <name>Atlassian Audit Root</name>
    <description>Parent POM of the Atlassian Audit project</description>

    <modules>
        <module>atlassian-audit-api</module>
        <module>atlassian-audit-core</module>
        <module>atlassian-audit-data-generator-plugin</module>
        <module>atlassian-audit-example</module>
        <module>atlassian-audit-integration-tests</module>
        <module>atlassian-audit-jira-converter</module>
        <module>atlassian-audit-pageobjects</module>
        <module>atlassian-audit-performance-tests</module>
        <module>atlassian-audit-plugin</module>
        <module>atlassian-audit-spi</module>
        <module>atlassian-audit-test-utils</module>
        <module>atlassian-audit-rest-model</module>
        <module>jacoco-aggregator</module>
    </modules>

    <scm>
        <connection>scm:git:git@bitbucket.org:atlassian/atlassian-audit.git</connection>
        <developerConnection>scm:git:git@bitbucket.org:atlassian/atlassian-audit.git</developerConnection>
        <url>https://bitbucket.org/atlassian/atlassian-audit</url>
        <tag>atlassian-audit-1.16.3</tag>
    </scm>
    <issueManagement>
        <system>JIRA</system>
        <url>https://ecosystem.atlassian.net/browse/AUDIT</url>
    </issueManagement>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <!-- The lowest common denominator of the products we support -->
        <platform.version>6.0.13</platform.version>
        <java.ws.version>1.1.1</java.ws.version>

        <!-- Atlassian versions -->
        <amps.version>8.9.1</amps.version>
        <activeobjects.version>4.1.1</activeobjects.version>
        <analytics.version>8.0.2</analytics.version>
        <atlassian.profiling.version>4.5.0</atlassian.profiling.version>
        <diagnostics.version>1.1.32</diagnostics.version>
        <osgi.java.config.version>0.5.2</osgi.java.config.version>
        <upgrade.task.framework.version>2.0.2</upgrade.task.framework.version>

        <!-- Third-party versions -->
        <assertj.version>3.13.2</assertj.version>
        <commons.codec.version>1.15</commons.codec.version>
        <commons.compress.version>1.21</commons.compress.version>
        <gson.version>2.2.2-atlassian-1</gson.version>
        <jsoup.version>1.14.3</jsoup.version>
        <junit-jupiter.version>5.8.2</junit-jupiter.version>
        <org.json.version>20180130</org.json.version>
        <supercsv.version>2.1.0</supercsv.version>

        <!-- product config -->
        <jira.version>9.7.0</jira.version>

        <!-- Git 2.37.0 and 2.37.1 will cause it to crash on startup -->
        <bitbucket.version>8.6.0</bitbucket.version>
        <bitbucket.http.port>7990</bitbucket.http.port>
        <bitbucket.context.path>bitbucket</bitbucket.context.path>
        <bitbucket.data.version>${bitbucket.version}</bitbucket.data.version>

        <confluence.version>8.0.0-auditing-m01</confluence.version>
        <confluence.data.version>7.18.0</confluence.data.version>

        <refapp.version>6.1.0-f9fae4d0</refapp.version>

        <!-- test config -->
        <xvfb.enable>true</xvfb.enable>
        <xvfb.display>:0</xvfb.display>
        <json.version>0.9</json.version>
        <!-- Code coverage -->
        <jacoco.ut.argLine />
        <jacoco.ut.exec>jacoco.exec</jacoco.ut.exec>
        <jacoco.it.argLine />
        <jacoco.it.exec>jacoco.it.exec</jacoco.it.exec>
        <jacoco.version>0.8.10</jacoco.version>
        <jacoco.include.pattern>com/atlassian/**/*</jacoco.include.pattern>
        <jacoco.report.file>jacoco-aggregator/target/site/jacoco-aggregate/jacoco.xml</jacoco.report.file>

        <sonar.projectName>Atlassian Audit</sonar.projectName>
        <sonar.projectKey>atlassian-audit</sonar.projectKey>
        <sonar.moduleKey>${project.artifactId}</sonar.moduleKey>
        <!-- classes to exclude from code coverage -->
        <sonar.coverage.exclusions>
            **/*Mapper.*,
            **/*Serializer.*,
            **/*Deserializer.*
        </sonar.coverage.exclusions>
        <!-- sonar maven plugin version -->
        <sonar.version>3.7.0.1746</sonar.version>

        <skipUTs>false</skipUTs>
        <rest-assured.version>5.1.1</rest-assured.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- Platform -->
            <dependency>
                <groupId>com.atlassian.platform</groupId>
                <artifactId>platform</artifactId>
                <version>${platform.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.atlassian.platform</groupId>
                <artifactId>third-party</artifactId>
                <version>${platform.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- The platform POM specifies v2, but we really use v1 along with Atlassian REST-->
            <dependency>
                <groupId>javax.ws.rs</groupId>
                <artifactId>jsr311-api</artifactId>
                <version>${java.ws.version}</version>
            </dependency>

            <!-- Project -->
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-api</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-integration-tests</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-jira-converter</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-pageobjects</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-plugin</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-rest-model</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-spi</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.audit</groupId>
                <artifactId>atlassian-audit-test-utils</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- START OF Manually controlled for security uplift -->
            <!-- When resolving "vulnerabilities", first check if we can bump the platform or the component version,
                    so we can leverage their work and keep a tidy POM -->
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>${gson.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons.codec.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>${commons.compress.version}</version>
            </dependency>
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>${org.json.version}</version>
            </dependency>
            <!-- END OF Manually controlled for security uplift -->

            <!-- Atlassian -->
            <dependency>
                <groupId>com.atlassian.analytics</groupId>
                <artifactId>analytics-api</artifactId>
                <version>${analytics.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.diagnostics</groupId>
                <artifactId>atlassian-diagnostics-api</artifactId>
                <version>${diagnostics.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.json</groupId>
                <artifactId>atlassian-json-api</artifactId>
                <version>${json.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.plugins</groupId>
                <artifactId>atlassian-plugins-osgi-javaconfig</artifactId>
                <version>${osgi.java.config.version}</version>
            </dependency>
            <!-- Only exists because it's missing from the platform POM -->
            <dependency>
                <groupId>com.atlassian.profiling</groupId>
                <artifactId>atlassian-profiling</artifactId>
                <version>${atlassian.profiling.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.upgrade</groupId>
                <artifactId>upgrade-task-framework-api</artifactId>
                <version>${upgrade.task.framework.version}</version>
            </dependency>

            <!-- Third party -->
            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured</artifactId>
                <version>${rest-assured.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>${jsoup.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${junit-jupiter.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
                <version>${assertj.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>net.sf.supercsv</groupId>
                <artifactId>super-csv</artifactId>
                <version>${supercsv.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.activeobjects</groupId>
                <artifactId>activeobjects-plugin</artifactId>
                <version>${activeobjects.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.activeobjects</groupId>
                <artifactId>activeobjects-spi</artifactId>
                <version>${activeobjects.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.activeobjects</groupId>
                <artifactId>activeobjects-test</artifactId>
                <version>${activeobjects.version}</version>
            </dependency>
            <dependency>
                <groupId>com.atlassian.activeobjects</groupId>
                <artifactId>activeobjects-confluence-spi</artifactId>
                <version>${activeobjects.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <skip>${skipUTs}</skip>
                        <argLine>${jacoco.ut.argLine}</argLine>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.22.2</version>
                    <configuration>
                        <argLine>${jacoco.it.argLine}</argLine>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.atlassian.maven.plugins</groupId>
                    <artifactId>amps-maven-plugin</artifactId>
                    <version>8.8.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <configLocation>checkstyle.xml</configLocation>
                    <encoding>${source.encoding}</encoding>
                    <includeTestSourceDirectory>true</includeTestSourceDirectory>
                    <consoleOutput>true</consoleOutput>
                    <excludes>**/atlassian/crowd/**/*.java</excludes>
                    <consoleOutput>true</consoleOutput>
                    <failsOnError>true</failsOnError>
                </configuration>
                <dependencies>
                    <!-- If you update versions for Checkstyle or either of the custom check jars, you need to
                         make matching changes in etc/git-hooks/pre-commit -->
                    <dependency>
                        <groupId>com.puppycrawl.tools</groupId>
                        <artifactId>checkstyle</artifactId>
                        <version>8.20</version>
                    </dependency>
                    <dependency>
                        <groupId>com.atlassian</groupId>
                        <artifactId>checkstyle-custom-checks</artifactId>
                        <version>1.0.0</version>
                        <exclusions>
                            <exclusion>
                                <groupId>checkstyle</groupId>
                                <artifactId>checkstyle</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tidy-maven-plugin</artifactId>
                <version>1.2.0</version>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.sonarsource.scanner.maven</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>${sonar.version}</version>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>jacoco</id>
            <properties>
                <!-- set jacoco argLine with JaCoCo runtime agent -->
                <jacoco.it.argLine>
                    -javaagent:${project.build.directory}/jacoco.agent-runtime.jar=destfile=${project.build.directory}/${jacoco.it.exec},includes=${jacoco.include.pattern}
                </jacoco.it.argLine>
                <jacoco.ut.argLine>
                    -javaagent:${project.build.directory}/jacoco.agent-runtime.jar=destfile=${project.build.directory}/${jacoco.ut.exec},includes=${jacoco.include.pattern}
                </jacoco.ut.argLine>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-jacoco-runtime-jar</id>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>copy</goal>
                                </goals>
                                <configuration>
                                    <artifactItems>
                                        <artifactItem>
                                            <groupId>org.jacoco</groupId>
                                            <artifactId>org.jacoco.agent</artifactId>
                                            <classifier>runtime</classifier>
                                            <version>${jacoco.version}</version>
                                            <destFileName>jacoco.agent-runtime.jar</destFileName>
                                            <outputDirectory>${project.build.directory}</outputDirectory>
                                        </artifactItem>
                                    </artifactItems>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>${jacoco.version}</version>
                        <configuration>
                            <includes>
                                <!-- classes that should be included in execution analysis. -->
                                <include>${jacoco.include.pattern}</include>
                            </includes>
                            <excludes>
                                <exclude>**/*Sample.java</exclude>
                            </excludes>
                        </configuration>
                        <executions>
                            <execution>
                                <id>pre-unit-test</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                            <!-- Ensures that the code coverage report for unit tests is created after unit tests have been run. -->
                            <execution>
                                <id>post-unit-test</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>pre-integration-test</id>
                                <goals>
                                    <goal>prepare-agent-integration</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
