<?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>

	<parent>
		<groupId>com.atlassian.jira.plugins</groupId>
		<artifactId>jira-greenhopper-parent-pom</artifactId>
		<version>10.3.3</version>
	</parent>

	<artifactId>jira-greenhopper-plugin</artifactId>
	<packaging>atlassian-plugin</packaging>

	<name>Atlassian GreenHopper</name>
    <description>This is the GreenHopper plugin for Atlassian Jira.</description>

	<pluginRepositories>
		<pluginRepository>
			<id>details-matter-maven-repository</id>
			<name>Details Matter Maven Repository</name>
			<url>http://details-matter-maven-repository.googlecode.com/svn/repository/</url>
		</pluginRepository>
	</pluginRepositories>

    <profiles>
        <profile>
            <id>jvm17</id>
            <activation>
                <jdk>17</jdk>
            </activation>
            <properties>
                <gh.schemaGen.skip>true</gh.schemaGen.skip>
            </properties>
        </profile>

        <profile>
            <id>wired-integration-tests</id>
            <activation>
                <property>
                    <name>wiredIntegrationTests</name>
                </property>
            </activation>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <skipTests>true</skipTests>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <argLine>${jvmOpens}</argLine>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>com.atlassian.maven.plugins</groupId>
                        <artifactId>jira-maven-plugin</artifactId>
                        <configuration>
                            <includedFeModuleManifests>
                                <includedFeModuleManifest>../package.json</includedFeModuleManifest>
                                <includedFeModuleManifest>../yarn.lock</includedFeModuleManifest>
                            </includedFeModuleManifests>
                            <feManifestAssociations>
                                <feManifestAssociation>
                                    <outputDirectoryFilesDeclaration>
                                        ${project.basedir}/fe-associations-declaration.json
                                    </outputDirectoryFilesDeclaration>
                                </feManifestAssociation>
                            </feManifestAssociations>
                            <verifyFeManifestAssociationsFailOnUndeclaredFiles>${verifyFeManifestAssociationsFailOnUndeclaredFiles}</verifyFeManifestAssociationsFailOnUndeclaredFiles>
                            <verifyFeManifestAssociationsFailOnExtraDeclarations>${verifyFeManifestAssociationsFailOnExtraDeclarations}</verifyFeManifestAssociationsFailOnExtraDeclarations>
                            <skipReportFeManifestAssociations>${skipReportFeManifestAssociations}</skipReportFeManifestAssociations>
                            <processI18nUsage>false</processI18nUsage>
                            <compressResources>false</compressResources>
                            <skipTests>false</skipTests>
                            <output>./jira-${jira.version}.log</output>
                            <testGroups>
                                <testGroup>
                                    <id>jira-integration</id>
                                    <productIds>
                                        <productId>jira</productId>
                                    </productIds>
                                    <includes>
                                        <include>${wired.integration.test.pattern}</include>
                                    </includes>
                                </testGroup>
                            </testGroups>

                            <applications>
                                <application>
                                    <applicationKey>jira-software</applicationKey>
                                    <version>${jira.software.application.version}</version>
                                </application>
                            </applications>

                            <testBundleExcludes>
                                <testBundleExclude>
                                    <groupId>com.atlassian.jira.plugins</groupId>
                                    <artifactId>jira-greenhopper-api</artifactId>
                                </testBundleExclude>

                                <testBundleExclude>
                                    <groupId>atlassian</groupId>
                                </testBundleExclude>
                                <testBundleExclude>
                                    <groupId>junit</groupId>
                                    <artifactId>junit-dep</artifactId>
                                </testBundleExclude>
                                <bundleExclude>
                                    <groupId>org.junit.jupiter</groupId>
                                </bundleExclude>
                                <bundleExclude>
                                    <groupId>org.junit.vintage</groupId>
                                </bundleExclude>
                            </testBundleExcludes>

                            <jvmArgs>${jvmOpens} ${jacocoArgLine} -Dcom.atlassian.jira.startup.LauncherContextListener.SYNCHRONOUS=true</jvmArgs>
                        </configuration>
                        <executions>
                            <execution>
                                <id>js-enforcement</id>
                                <goals>
                                    <goal>verify-fe-manifest-associations</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <verifyFeManifestAssociationsInputEntrypoint>
                                        ${project.build.directory}/${project.build.finalName}.jar
                                    </verifyFeManifestAssociationsInputEntrypoint>
                                    <failOnUndeclaredFiles>false</failOnUndeclaredFiles>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <!-- When we're developing, we want access to Jira's Func Test Plugin -->
            <id>DevMode</id>
            <properties>
                <frontend.build.mode>development</frontend.build.mode>
                <frontend.install.cmd>${frontend.install.cmd.forDevelopment}</frontend.install.cmd>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.atlassian.maven.plugins</groupId>
                        <artifactId>jira-maven-plugin</artifactId>
                        <extensions>true</extensions>
                        <configuration>
                            <includedFeModuleManifests>
                                <includedFeModuleManifest>../package.json</includedFeModuleManifest>
                                <includedFeModuleManifest>../yarn.lock</includedFeModuleManifest>
                            </includedFeModuleManifests>
                            <feManifestAssociations>
                                <feManifestAssociation>
                                    <outputDirectoryFilesDeclaration>
                                        ${project.basedir}/fe-associations-declaration.json
                                    </outputDirectoryFilesDeclaration>
                                </feManifestAssociation>
                            </feManifestAssociations>
                            <verifyFeManifestAssociationsFailOnUndeclaredFiles>${verifyFeManifestAssociationsFailOnUndeclaredFiles}</verifyFeManifestAssociationsFailOnUndeclaredFiles>
                            <verifyFeManifestAssociationsFailOnExtraDeclarations>${verifyFeManifestAssociationsFailOnExtraDeclarations}</verifyFeManifestAssociationsFailOnExtraDeclarations>
                            <skipReportFeManifestAssociations>${skipReportFeManifestAssociations}</skipReportFeManifestAssociations>
                            <processI18nUsage>false</processI18nUsage>
                            <compressResources>false</compressResources>
                            <systemPropertyVariables>
                                <pac.baseurl>${pac.baseurl}</pac.baseurl>
                                <upm.pac.disable>false</upm.pac.disable>
                                <plugin.webresource.source.map.enabled>true</plugin.webresource.source.map.enabled>
                                <plugin.webresource.source.map.optimised.for.development>true</plugin.webresource.source.map.optimised.for.development>
                                <atlassian.webresource.file.cache.size>0</atlassian.webresource.file.cache.size>
                                <plugin.resource.directories>${basedir}/target/classes</plugin.resource.directories>
                            </systemPropertyVariables>
                            <enableQuickReload>true</enableQuickReload>

                            <libArtifacts>
                                <!-- include this so that we can run gh-debug with postgres-->
                                <libArtifact>
                                    <groupId>org.postgresql</groupId>
                                    <artifactId>postgresql</artifactId>
                                    <version>${database.driver.version.postgres}</version>
                                </libArtifact>
                                <!-- include this so that we can run gh-debug with oracle -->
                                <libArtifact>
                                    <groupId>com.oracle</groupId>
                                    <artifactId>ojdbc8-atlassian-hosted</artifactId>
                                    <version>${database.driver.version.oracle}</version>
                                </libArtifact>
                                <libArtifact>
                                    <groupId>mysql</groupId>
                                    <artifactId>mysql-connector-java</artifactId>
                                    <version>${database.driver.version.mysql}</version>
                                </libArtifact>
                                <libArtifact>
                                    <groupId>com.microsoft.sqlserver</groupId>
                                    <artifactId>mssql-jdbc</artifactId>
                                    <version>${database.driver.version.mssql}</version>
                                </libArtifact>
                            </libArtifacts>

                            <applications>
                                <application>
                                    <applicationKey>jira-software</applicationKey>
                                    <version>${jira.software.application.version}</version>
                                </application>
                            </applications>

                            <pluginArtifacts>
                                <pluginArtifact>
                                    <groupId>com.atlassian.jira.tests</groupId>
                                    <artifactId>jira-testkit-plugin</artifactId>
                                    <version>${testkit.version}</version>
                                </pluginArtifact>
                                <pluginArtifact>
                                    <groupId>com.atlassian.jira.plugins</groupId>
                                    <artifactId>greenhopper-client-plugin</artifactId>
                                    <version>${project.version}</version>
                                </pluginArtifact>
                                <pluginArtifact>
                                    <groupId>com.atlassian.jira.plugins</groupId>
                                    <artifactId>greenhopper-dev-extensions</artifactId>
                                    <version>${project.version}</version>
                                </pluginArtifact>
                                <pluginArtifact>
                                    <groupId>com.atlassian.plugins.jstestrunner</groupId>
                                    <artifactId>atlassian-jstest-runner-plugin</artifactId>
                                    <version>${atlassian.jstest.runner.plugin.version}</version>
                                </pluginArtifact>
                                <pluginArtifact>
                                    <groupId>com.atlassian.plugins</groupId>
                                    <artifactId>atlassian-connect-plugin</artifactId>
                                    <version>1.1.48</version>
                                </pluginArtifact>
                                <pluginArtifact>
                                    <groupId>com.atlassian.jwt</groupId>
                                    <artifactId>jwt-plugin</artifactId>
                                    <version>1.2.2</version>
                                </pluginArtifact>
                                <pluginArtifact>
                                    <groupId>com.atlassian.bundles</groupId>
                                    <artifactId>json-schema-validator-atlassian-bundle</artifactId>
                                    <version>1.0.4</version>
                                </pluginArtifact>
                                <pluginArtifact>
                                    <groupId>com.atlassian.jira</groupId>
                                    <artifactId>jira-func-test-plugin</artifactId>
                                    <version>${jira.func.test.version}</version>
                                </pluginArtifact>
                                <pluginArtifact>
                                    <groupId>com.atlassian.jira</groupId>
                                    <artifactId>jira-projects-plugin</artifactId>
                                </pluginArtifact>
                            </pluginArtifacts>
                            <testBundleExcludes>
                                <testBundleExclude>
                                    <groupId>atlassian</groupId>
                                </testBundleExclude>
                                <testBundleExclude>
                                    <groupId>junit</groupId>
                                    <artifactId>junit-dep</artifactId>
                                </testBundleExclude>
                            </testBundleExcludes>
                        </configuration>
                        <executions>
                            <execution>
                                <id>js-enforcement</id>
                                <goals>
                                    <goal>verify-fe-manifest-associations</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <verifyFeManifestAssociationsInputEntrypoint>
                                        ${project.build.directory}/${project.build.finalName}.jar
                                    </verifyFeManifestAssociationsInputEntrypoint>
                                    <failOnUndeclaredFiles>false</failOnUndeclaredFiles>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.5.0</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <executable>yarn</executable>
                            <!-- optional -->
                            <workingDirectory>../</workingDirectory>
                            <async>true</async>
                            <asyncDestroyOnShutdown>true</asyncDestroyOnShutdown>
                            <arguments>
                                <argument>run</argument>
                                <argument>watch</argument>
                            </arguments>
                        </configuration>
                    </plugin>

                </plugins>
            </build>
        </profile>

        <profile>
            <id>watch-mode</id>
            <properties>
                <frontend.build.mode>watch</frontend.build.mode>
                <frontend.install.cmd>${frontend.install.cmd.forDevelopment}</frontend.install.cmd>
            </properties>
        </profile>

        <profile>
            <id>dev-mode</id>
            <activation>
                <property>
                    <name>jira.dev.mode</name>
                    <value>true</value>
                </property>
            </activation>
            <properties>
                <frontend.build.mode>development</frontend.build.mode>
                <frontend.install.cmd>${frontend.install.cmd.forDevelopment}</frontend.install.cmd>
            </properties>
        </profile>

        <profile>
            <!-- in QAData, we use a different path to the data. gh-debug ensures that there is data there -->
            <id>QAData</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.atlassian.maven.plugins</groupId>
                        <artifactId>jira-maven-plugin</artifactId>
                        <extensions>true</extensions>
                        <configuration>
                            <includedFeModuleManifests>
                                <includedFeModuleManifest>../package.json</includedFeModuleManifest>
                                <includedFeModuleManifest>../yarn.lock</includedFeModuleManifest>
                            </includedFeModuleManifests>
                            <feManifestAssociations>
                                <feManifestAssociation>
                                    <outputDirectoryFilesDeclaration>
                                        ${project.basedir}/fe-associations-declaration.json
                                    </outputDirectoryFilesDeclaration>
                                </feManifestAssociation>
                            </feManifestAssociations>
                            <verifyFeManifestAssociationsFailOnUndeclaredFiles>${verifyFeManifestAssociationsFailOnUndeclaredFiles}</verifyFeManifestAssociationsFailOnUndeclaredFiles>
                            <verifyFeManifestAssociationsFailOnExtraDeclarations>${verifyFeManifestAssociationsFailOnExtraDeclarations}</verifyFeManifestAssociationsFailOnExtraDeclarations>
                            <skipReportFeManifestAssociations>${skipReportFeManifestAssociations}</skipReportFeManifestAssociations>
                            <processI18nUsage>false</processI18nUsage>
                            <productDataVersion>${jira.data.version}</productDataVersion>
                            <productDataPath>${gh.data.qa}</productDataPath>
                            <testBundleExcludes>
                                <testBundleExclude>
                                    <groupId>atlassian</groupId>
                                </testBundleExclude>
                                <testBundleExclude>
                                    <groupId>junit</groupId>
                                    <artifactId>junit-dep</artifactId>
                                </testBundleExclude>
                            </testBundleExcludes>
                        </configuration>
                        <executions>
                            <execution>
                                <id>js-enforcement</id>
                                <goals>
                                    <goal>verify-fe-manifest-associations</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <verifyFeManifestAssociationsInputEntrypoint>
                                        ${project.build.directory}/${project.build.finalName}.jar
                                    </verifyFeManifestAssociationsInputEntrypoint>
                                    <failOnUndeclaredFiles>false</failOnUndeclaredFiles>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>default</id>
            <activation>
                <property>
                    <name>default</name>
                </property>
            </activation>
            <build>
                <plugins />
            </build>
        </profile>

        <profile>
            <!-- generate the REST OpenAPIs documentation -->
            <id>generate-openapi-docs</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>jira.generateDocs</name>
                </property>
            </activation>
            <properties>
                <maven.javadoc.skip>false</maven.javadoc.skip>
                <openapi.enricher.mode>external</openapi.enricher.mode>
                <!-- Skip FE SBOM verification since this profile doesn't build JavaScripts -->
                <verifyFeManifestAssociationsFailOnUndeclaredFiles>false</verifyFeManifestAssociationsFailOnUndeclaredFiles>
                <verifyFeManifestAssociationsFailOnExtraDeclarations>false</verifyFeManifestAssociationsFailOnExtraDeclarations>
                <skipReportFeManifestAssociations>true</skipReportFeManifestAssociations>
            </properties>
            <build>
                <plugins>
                    <!--OpenAPI generation-->
                    <plugin>
                        <groupId>com.atlassian.bitbucket.server.swagger</groupId>
                        <artifactId>swagger-maven-plugin</artifactId>
                        <version>${swagger.maven.plugin.version}</version>
                        <configuration>
                            <scanOnlyProjectClasses>false</scanOnlyProjectClasses>
                            <resourcePackages>
                                <resourcePackage>com.atlassian.greenhopper.api.rest</resourcePackage>
                            </resourcePackages>
                            <useResourcePackagesChildren>true</useResourcePackagesChildren>
                            <enrichers>
                                <enricher>com.atlassian.jira.dc.swagger.enricher.JiraEnricher</enricher>
                            </enrichers>
                            <outputDirectory>${project.build.directory}/site</outputDirectory>
                            <outputFilename>swagger</outputFilename>
                            <outputFormats>JSON,YAML</outputFormats>
                            <prettyPrint>true</prettyPrint>
                            <swaggerConfig>
                                <servers>
                                    <server>
                                        <description>Endpoint URL</description>
                                    </server>
                                </servers>
                                <info>
                                    <title>Jira Software REST API Reference</title>
                                    <version>${project.version}</version>
                                </info>
                            </swaggerConfig>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>com.atlassian.dc.swagger</groupId>
                                <artifactId>processor</artifactId>
                                <version>${jira.swagger.extras.version}</version>
                            </dependency>
                            <dependency>
                                <groupId>com.fasterxml.jackson.core</groupId>
                                <artifactId>jackson-databind</artifactId>
                                <version>${fasterxml.jackson.version}</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <phase>compile</phase>
                                <goals>
                                    <goal>generate</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>third-party-licensing</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-bill-of-materials</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.outputDirectory}/</outputDirectory>
                                    <overwrite>true</overwrite>
                                    <resources>
                                        <resource>
                                            <directory>../third-party-licensing</directory>
                                            <includes>
                                                <include>bom.csv</include>
                                            </includes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                            <execution>
                                <id>copy-licenses</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.outputDirectory}/licenses</outputDirectory>
                                    <overwrite>true</overwrite>
                                    <resources>
                                        <resource>
                                            <directory>../third-party-licensing/licenses</directory>
                                            <includes>
                                                <include>*.txt</include>
                                            </includes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>dbprovide</id>
            <dependencies>
                <dependency>
                    <groupId>com.atlassian.jira.plugins</groupId>
                    <artifactId>greenhopper-dbprovide</artifactId>
                    <type>pom</type>
                    <version>${project.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <profile>
            <id>pgpool</id>
            <dependencies>
                <dependency>
                    <groupId>com.atlassian.jira.plugins</groupId>
                    <artifactId>greenhopper-dbprovide</artifactId>
                    <type>pom</type>
                    <version>${project.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <profile>
            <id>dbsetup</id>
            <build>
                <plugins>
                    <plugin>
                        <dependencies>
                            <dependency>
                                <groupId>org.postgresql</groupId>
                                <artifactId>postgresql</artifactId>
                                <version>${database.driver.version.postgres}</version>
                            </dependency>
                            <dependency>
                                <groupId>com.microsoft.sqlserver</groupId>
                                <artifactId>mssql-jdbc</artifactId>
                                <version>${database.driver.version.mssql}</version>
                            </dependency>
                            <dependency>
                                <groupId>mysql</groupId>
                                <artifactId>mysql-connector-java</artifactId>
                                <version>${database.driver.version.mysql}</version>
                            </dependency>
                            <dependency>
                                <groupId>com.oracle</groupId>
                                <artifactId>ojdbc8-atlassian-hosted</artifactId>
                                <version>${database.driver.version.oracle}</version>
                            </dependency>
                        </dependencies>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>sql-maven-plugin</artifactId>
                        <version>1.5</version>
                        <configuration>
                            <driver>${ao.test.database.driver}</driver>
                            <url>${ao.test.database.url}</url>
                            <username>${ao.test.database.root.user}</username>
                            <password>${ao.test.database.root.password}</password>
                        </configuration>
                        <executions>
                            <execution>
                                <id>drop-db</id>
                                <phase>process-test-classes</phase>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                                <configuration>
                                    <url>${ao.test.database.root.url}</url>
                                    <autocommit>true</autocommit>
                                    <sqlCommand>${ao.test.database.drop.command}</sqlCommand>
                                </configuration>
                            </execution>
                            <execution>
                                <id>create-db</id>
                                <phase>process-test-classes</phase>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                                <configuration>
                                    <url>${ao.test.database.root.url}</url>
                                    <autocommit>true</autocommit>
                                    <sqlCommand>${ao.test.database.create.command}</sqlCommand>
                                </configuration>
                            </execution>
                            <execution>
                                <id>setup-tables</id>
                                <phase>process-test-classes</phase>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                                <configuration>
                                    <fileset>
                                        <basedir>${basedir}</basedir>
                                        <includes>
                                            <include>${ao.test.database.setup.sql}</include>
                                        </includes>
                                    </fileset>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>postgres</id>
            <activation>
                <property>
                    <name>tpm.postgres</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.postgresql</groupId>
                    <artifactId>postgresql</artifactId>
                    <version>${database.driver.version.postgres}</version>
                </dependency>
            </dependencies>
            <properties>
                <!--Used to set up the database-->
                <ao.test.database.port>5433</ao.test.database.port>
                <ao.test.database.setup.sql>src/test/sql/unit-test-setup-postgres.sql</ao.test.database.setup.sql>
                <ao.test.database.create.command>CREATE database ao_test WITH ENCODING 'UNICODE' LC_COLLATE 'C' LC_CTYPE 'C' TEMPLATE template0</ao.test.database.create.command>
                <ao.test.database.drop.command>DROP DATABASE IF EXISTS ao_test</ao.test.database.drop.command>
                <ao.test.database.root.url>jdbc:postgresql://${ao.test.database.hostname}:${ao.test.database.port}/postgres</ao.test.database.root.url>
                <ao.test.database.root.user>postgres</ao.test.database.root.user>
                <ao.test.database.root.password>postgresbox</ao.test.database.root.password>
                <ao.test.database.driver>org.postgresql.Driver</ao.test.database.driver>

                <!--Used to run tests-->
                <ao.test.database.url>jdbc:postgresql://${ao.test.database.hostname}:${ao.test.database.port}/ao_test</ao.test.database.url>
                <ao.test.database.schema>ao_schema</ao.test.database.schema>
                <ao.test.database.username>ao_user</ao.test.database.username>
                <ao.test.database.password>ao_password</ao.test.database.password>
            </properties>
        </profile>

        <profile>
            <id>mysql</id>
            <activation>
                <property>
                    <name>tpm.mysql</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${database.driver.version.mysql}</version>
                </dependency>
            </dependencies>
            <properties>
                <!--Used to set up the database-->
                <ao.test.database.port>3307</ao.test.database.port>
                <ao.test.database.setup.sql>src/test/sql/unit-test-setup-mysql.sql</ao.test.database.setup.sql>
                <ao.test.database.queryparams>useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</ao.test.database.queryparams>
                <ao.test.database.root.url>jdbc:mysql://${ao.test.database.hostname}:${ao.test.database.port}/information_schema?${ao.test.database.queryparams}</ao.test.database.root.url>
                <ao.test.database.root.user>root</ao.test.database.root.user>
                <ao.test.database.root.password>mysqlbox</ao.test.database.root.password>
                <ao.test.database.create.command>CREATE DATABASE ao_test</ao.test.database.create.command>
                <ao.test.database.drop.command>DROP DATABASE IF EXISTS ao_test</ao.test.database.drop.command>
                <ao.test.database.driver>com.mysql.cj.jdbc.Driver</ao.test.database.driver>

                <!--Used to run tests-->
                <ao.test.database.url>jdbc:mysql://${ao.test.database.hostname}:${ao.test.database.port}/ao_test?${ao.test.database.queryparams}</ao.test.database.url>
                <ao.test.database.schema />
                <ao.test.database.username>ao_user</ao.test.database.username>
                <ao.test.database.password>ao_password</ao.test.database.password>
            </properties>
        </profile>

        <profile>
            <id>oracledb</id>
            <activation>
                <property>
                    <name>tpm.oracledb</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.oracle</groupId>
                    <artifactId>ojdbc8-atlassian-hosted</artifactId>
                    <version>${database.driver.version.oracle}</version>
                </dependency>
            </dependencies>
            <properties>
                <ao.test.database.port>1521</ao.test.database.port>
                <ao.test.database.sid>JIRADB</ao.test.database.sid>
                <ao.test.database.setup.sql>src/test/sql/unit-test-setup-oracle.sql</ao.test.database.setup.sql>
                <ao.test.database.root.url>${ao.test.database.url}</ao.test.database.root.url>
                <ao.test.database.root.user>system</ao.test.database.root.user>
                <ao.test.database.root.password>oracle</ao.test.database.root.password>
                <ao.test.database.driver>oracle.jdbc.OracleDriver</ao.test.database.driver>
                <ao.test.database.url>jdbc:oracle:thin:@${ao.test.database.hostname}:${ao.test.database.port}:${ao.test.database.sid}?oracle.net.disableOob=true</ao.test.database.url>
                <ao.test.database.schema />
                <ao.test.database.username>jira</ao.test.database.username>
                <ao.test.database.password>jira</ao.test.database.password>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>docker.atl-paas.net/atlassian/jira/server/oracle-database:${tpm.oracledb}</name>
                                    <run>
                                        <ports>
                                            <port>${ao.test.database.port}:${ao.test.database.port}</port>
                                        </ports>
                                        <wait>
                                            <log>DATABASE IS READY TO USE</log>
                                            <time>180000</time>
                                        </wait>
                                        <log>
                                            <prefix>database</prefix>
                                            <date>default</date>
                                            <color>cyan</color>
                                        </log>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <execution>
                                <id>start</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>start</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>stop</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>mssql2017</id>
            <activation>
                <property>
                    <name>tpm.mssql.2017</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.microsoft.sqlserver</groupId>
                    <artifactId>mssql-jdbc</artifactId>
                    <version>${database.driver.version.mssql}</version>
                </dependency>
            </dependencies>
            <properties>
                <!--Used to set up the database-->
                <ao.test.database.port>1433</ao.test.database.port>
                <ao.test.database.setup.sql>src/test/sql/unit-test-setup-mssql.sql</ao.test.database.setup.sql>
                <ao.test.database.root.url>jdbc:sqlserver://${ao.test.database.hostname}:${ao.test.database.port};databaseName=master;autoCommit=false</ao.test.database.root.url>
                <ao.test.database.root.user>sa</ao.test.database.root.user>
                <ao.test.database.root.password>Passw0rd</ao.test.database.root.password>
                <ao.test.database.create.command>CREATE DATABASE ao_test</ao.test.database.create.command>
                <ao.test.database.drop.command>IF EXISTS(select * from sys.databases where name='ao_test') DROP DATABASE ao_test</ao.test.database.drop.command>
                <ao.test.database.driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</ao.test.database.driver>

                <!--Used to run tests-->
                <ao.test.database.url>jdbc:sqlserver://${ao.test.database.hostname}:${ao.test.database.port};databaseName=ao_test;autoCommit=false</ao.test.database.url>
                <ao.test.database.schema>ao_schema</ao.test.database.schema>
                <ao.test.database.username>ao_user</ao.test.database.username>
                <ao.test.database.password>ao_password@!123</ao.test.database.password>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>docker.atlassian.io/atlassian/jira/server/mssql:2017-agile</name>
                                    <run>
                                        <ports>
                                            <port>${ao.test.database.port}:${ao.test.database.port}</port>
                                        </ports>
                                        <wait>
                                            <log>Service Broker manager has started</log>
                                            <time>1200000</time>
                                        </wait>
                                        <log>
                                            <prefix>database</prefix>
                                            <date>default</date>
                                            <color>cyan</color>
                                        </log>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <execution>
                                <id>start</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>start</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>stop</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>mssql2019</id>
            <activation>
                <property>
                    <name>tpm.mssql.2019</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.microsoft.sqlserver</groupId>
                    <artifactId>mssql-jdbc</artifactId>
                    <version>${database.driver.version.mssql}</version>
                </dependency>
            </dependencies>
            <properties>
                <!--Used to set up the database-->
                <ao.test.database.port>1433</ao.test.database.port>
                <ao.test.database.setup.sql>src/test/sql/unit-test-setup-mssql.sql</ao.test.database.setup.sql>
                <ao.test.database.root.url>jdbc:sqlserver://${ao.test.database.hostname}:${ao.test.database.port};databaseName=master;autoCommit=false</ao.test.database.root.url>
                <ao.test.database.root.user>sa</ao.test.database.root.user>
                <ao.test.database.root.password>Passw0rd</ao.test.database.root.password>
                <ao.test.database.create.command>CREATE DATABASE ao_test</ao.test.database.create.command>
                <ao.test.database.drop.command>IF EXISTS(select * from sys.databases where name='ao_test') DROP DATABASE ao_test</ao.test.database.drop.command>
                <ao.test.database.driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</ao.test.database.driver>

                <!--Used to run tests-->
                <ao.test.database.url>jdbc:sqlserver://${ao.test.database.hostname}:${ao.test.database.port};databaseName=ao_test;autoCommit=false</ao.test.database.url>
                <ao.test.database.schema>ao_schema</ao.test.database.schema>
                <ao.test.database.username>ao_user</ao.test.database.username>
                <ao.test.database.password>ao_password@!123</ao.test.database.password>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>docker.atl-paas.net/atlassian/jira/server/mssql:2019-agile</name>
                                    <run>
                                        <ports>
                                            <port>${ao.test.database.port}:${ao.test.database.port}</port>
                                        </ports>
                                        <wait>
                                            <log>Service Broker manager has started</log>
                                            <time>1200000</time>
                                        </wait>
                                        <log>
                                            <prefix>database</prefix>
                                            <date>default</date>
                                            <color>cyan</color>
                                        </log>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <execution>
                                <id>start</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>start</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>stop</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>mssql2022</id>
            <activation>
                <property>
                    <name>tpm.mssql.2022</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.microsoft.sqlserver</groupId>
                    <artifactId>mssql-jdbc</artifactId>
                    <version>${database.driver.version.mssql}</version>
                </dependency>
            </dependencies>
            <properties>
                <!--Used to set up the database-->
                <ao.test.database.port>1433</ao.test.database.port>
                <ao.test.database.setup.sql>src/test/sql/unit-test-setup-mssql.sql</ao.test.database.setup.sql>
                <ao.test.database.root.url>jdbc:sqlserver://${ao.test.database.hostname}:${ao.test.database.port};databaseName=master;autoCommit=false</ao.test.database.root.url>
                <ao.test.database.root.user>sa</ao.test.database.root.user>
                <ao.test.database.root.password>Passw0rd</ao.test.database.root.password>
                <ao.test.database.create.command>CREATE DATABASE ao_test</ao.test.database.create.command>
                <ao.test.database.drop.command>IF EXISTS(select * from sys.databases where name='ao_test') DROP DATABASE ao_test</ao.test.database.drop.command>
                <ao.test.database.driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</ao.test.database.driver>

                <!--Used to run tests-->
                <ao.test.database.url>jdbc:sqlserver://${ao.test.database.hostname}:${ao.test.database.port};databaseName=ao_test;autoCommit=false</ao.test.database.url>
                <ao.test.database.schema>ao_schema</ao.test.database.schema>
                <ao.test.database.username>ao_user</ao.test.database.username>
                <ao.test.database.password>ao_password@!123</ao.test.database.password>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>docker.atl-paas.net/atlassian/jira/server/mssql:2022-agile</name>
                                    <run>
                                        <ports>
                                            <port>${ao.test.database.port}:${ao.test.database.port}</port>
                                        </ports>
                                        <wait>
                                            <log>Service Broker manager has started</log>
                                            <time>1200000</time>
                                        </wait>
                                        <log>
                                            <prefix>database</prefix>
                                            <date>default</date>
                                            <color>cyan</color>
                                        </log>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <execution>
                                <id>start</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>start</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>stop</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>skip-unit-tests</id>
            <activation>
                <property>
                    <name>skipUTs</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <skipTests>true</skipTests>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <!--code coverage Unit Tests-->
            <id>jacoco</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <!--Important to have "once" here as it will allow to connect Jacoco to surefire-->
                            <forkMode>once</forkMode>
                            <argLine>${jvmOpens} -Xmx1024m ${jacocoArgLine}</argLine>
                            <excludes>
                                <exclude>${wired.integration.test.pattern}</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

	<build>
		<resources>
			<resource>
				<targetPath>../classes</targetPath>
				<directory>src/main/resources</directory>
                <filtering>false</filtering>
                <excludes>
                    <exclude>gh-help-paths.properties</exclude>
                    <exclude>**/*.js</exclude>
                </excludes>
			</resource>
			<resource>
				<targetPath>../classes</targetPath>
				<directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>gh-help-paths.properties</include>
                </includes>
			</resource>
		</resources>
		<plugins>
            <plugin>
                <groupId>org.zeroturnaround</groupId>
                <artifactId>jrebel-maven-plugin</artifactId>
                <version>1.1.5</version>
                <configuration>
                    <classpath>
                        <resources>
                            <resource>
                                <directory>src/main/resources</directory>
                            </resource>
                        </resources>
                    </classpath>
                    <alwaysGenerate>true</alwaysGenerate>
                </configuration>
                <executions>
                    <execution>
                        <id>generate-rebel-xml</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.9.1</version>
                <executions>
                    <execution>
                        <id>add-test-source</id>
                        <phase>generate-test-sources</phase>
                        <goals>
                            <goal>add-test-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${wired.integration.test.directory}</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>${frontend.maven.plugin.version}</version>
                <configuration>
                    <environmentVariables>
                        <JDK_JAVA_OPTIONS>${jvm.test.opens}</JDK_JAVA_OPTIONS>
                    </environmentVariables>
                </configuration>
                <executions>
                    <execution>
                        <id>step-2-install-frontend-dependencies</id>
                        <goals>
                            <goal>yarn</goal>
                        </goals>
                        <configuration>
                            <arguments>${frontend.install.cmd}</arguments>
                        </configuration>
                        <phase>process-resources</phase>
                        <inherited>false</inherited>
                    </execution>
                    <execution>
                        <id>step-3a-compile-the-ui-legacy</id>
                        <goals>
                            <goal>yarn</goal>
                        </goals>
                        <configuration>
                            <arguments>generate</arguments>
                        </configuration>
                        <phase>process-resources</phase>
                    </execution>
                    <execution>
                        <id>step-3b-compile-the-ui</id>
                        <goals>
                            <goal>yarn</goal>
                        </goals>
                        <configuration>
                            <arguments>build:${frontend.build.mode}</arguments>
                        </configuration>
                        <phase>process-resources</phase>
                    </execution>
                </executions>

            </plugin>

            <plugin>
                <groupId>com.atlassian.lesscss</groupId>
                <artifactId>lesscss-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>compile-less</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

			<plugin>
				<groupId>com.atlassian.maven.plugins</groupId>
				<artifactId>jira-maven-plugin</artifactId>
				<extensions>true</extensions>
				<configuration>
                    <!-- Skip wired integration tests by default - override in it wired-integration-tests profile -->
                    <includedFeModuleManifests>
                        <includedFeModuleManifest>../package.json</includedFeModuleManifest>
                        <includedFeModuleManifest>../yarn.lock</includedFeModuleManifest>
                    </includedFeModuleManifests>
                    <feManifestAssociations>
                        <feManifestAssociation>
                            <outputDirectoryFilesDeclaration>
                                ${project.basedir}/fe-associations-declaration.json
                            </outputDirectoryFilesDeclaration>
                        </feManifestAssociation>
                    </feManifestAssociations>
                    <verifyFeManifestAssociationsFailOnUndeclaredFiles>${verifyFeManifestAssociationsFailOnUndeclaredFiles}</verifyFeManifestAssociationsFailOnUndeclaredFiles>
                    <verifyFeManifestAssociationsFailOnExtraDeclarations>${verifyFeManifestAssociationsFailOnExtraDeclarations}</verifyFeManifestAssociationsFailOnExtraDeclarations>
                    <skipReportFeManifestAssociations>${skipReportFeManifestAssociations}</skipReportFeManifestAssociations>
                    <processI18nUsage>false</processI18nUsage>
                    <skipTests>true</skipTests>
                    <enableQuickReload>true</enableQuickReload>
                    <systemPropertyVariables>
                        <atlassian.upm.on.demand>${atlassian.upm.on.demand}</atlassian.upm.on.demand>
                    </systemPropertyVariables>
					<instructions>
                        <Export-Package>
                            <!-- Before adding a package here, please consider if it is really needed.
                            If so, add also an entry for TestOsgiBundle test in Jira Core: https://hello.atlassian.net/wiki/spaces/JIRASERVER/pages/3124548629/CI+OSGi  -->
                            com.atlassian.greenhopper,
                            com.atlassian.greenhopper.analytics,
                            com.atlassian.greenhopper.analytics.findonboard,
                            com.atlassian.greenhopper.anonymization,
                            com.atlassian.greenhopper.api,
                            com.atlassian.greenhopper.api.customfield,
                            com.atlassian.greenhopper.api.entity.remotelink.sprint,
                            com.atlassian.greenhopper.api.epics,
                            com.atlassian.greenhopper.api.events,
                            com.atlassian.greenhopper.api.events.board,
                            com.atlassian.greenhopper.api.events.feature,
                            com.atlassian.greenhopper.api.events.sprint,
                            com.atlassian.greenhopper.api.issuelink,
                            com.atlassian.greenhopper.api.issuelinktype,
                            com.atlassian.greenhopper.api.issuetype,
                            com.atlassian.greenhopper.api.rank,
                            com.atlassian.greenhopper.api.rank.web,
                            com.atlassian.greenhopper.api.rapid.configuration,
                            com.atlassian.greenhopper.api.rapid.view,
                            com.atlassian.greenhopper.api.rest,
                            com.atlassian.greenhopper.api.rest.bean,
                            com.atlassian.greenhopper.api.rest.bean.example,
                            com.atlassian.greenhopper.api.rest.util,
                            com.atlassian.greenhopper.api.sprint,
                            com.atlassian.greenhopper.api.sprints,
                            com.atlassian.greenhopper.api.web.projects,
                            com.atlassian.greenhopper.auditing,
                            com.atlassian.greenhopper.auditing.handlers,
                            com.atlassian.greenhopper.auditing.items,
                            com.atlassian.greenhopper.cache,
                            com.atlassian.greenhopper.confluence,
                            com.atlassian.greenhopper.confluence.rpc,
                            com.atlassian.greenhopper.customfield,
                            com.atlassian.greenhopper.customfield.epiccolor,
                            com.atlassian.greenhopper.customfield.epiclabel,
                            com.atlassian.greenhopper.customfield.epiclink,
                            com.atlassian.greenhopper.customfield.epicstatus,
                            com.atlassian.greenhopper.customfield.lexorank,
                            com.atlassian.greenhopper.customfield.rank,
                            com.atlassian.greenhopper.customfield.searcher,
                            com.atlassian.greenhopper.customfield.sprint,
                            com.atlassian.greenhopper.customfield.terminology,
                            com.atlassian.greenhopper.entity.remotelink,
                            com.atlassian.greenhopper.entity.remotelink.sprint,
                            com.atlassian.greenhopper.event.mau,
                            com.atlassian.greenhopper.event.mau.filter,
                            com.atlassian.greenhopper.events,
                            com.atlassian.greenhopper.events.board,
                            com.atlassian.greenhopper.events.feature,
                            com.atlassian.greenhopper.events.sprint,
                            com.atlassian.greenhopper.features,
                            com.atlassian.greenhopper.filter,
                            com.atlassian.greenhopper.gadget,
                            com.atlassian.greenhopper.gadget.model,
                            com.atlassian.greenhopper.global,
                            com.atlassian.greenhopper.healthcheck,
                            com.atlassian.greenhopper.imports,
                            com.atlassian.greenhopper.issue,
                            com.atlassian.greenhopper.issue.detailsview,
                            com.atlassian.greenhopper.issue.fields,
                            com.atlassian.greenhopper.issue.fields.status,
                            com.atlassian.greenhopper.issue.index,
                            com.atlassian.greenhopper.issue.link,
                            com.atlassian.greenhopper.issue.terminology,
                            com.atlassian.greenhopper.issue.util,
                            com.atlassian.greenhopper.jira,
                            com.atlassian.greenhopper.jira.actions,
                            com.atlassian.greenhopper.jira.dataimport,
                            com.atlassian.greenhopper.jira.filters,
                            com.atlassian.greenhopper.jira.permission,
                            com.atlassian.greenhopper.license,
                            com.atlassian.greenhopper.manager,
                            com.atlassian.greenhopper.manager.audit,
                            com.atlassian.greenhopper.manager.cardlayout,
                            com.atlassian.greenhopper.manager.color,
                            com.atlassian.greenhopper.manager.detailview,
                            com.atlassian.greenhopper.manager.estimatestatistic,
                            com.atlassian.greenhopper.manager.issue.fields,
                            com.atlassian.greenhopper.manager.issue.issuetypes,
                            com.atlassian.greenhopper.manager.issuelink,
                            com.atlassian.greenhopper.manager.lexorank,
                            com.atlassian.greenhopper.manager.lexorank.balancer,
                            com.atlassian.greenhopper.manager.lexorank.collation,
                            com.atlassian.greenhopper.manager.lexorank.lock,
                            com.atlassian.greenhopper.manager.lexorank.suspend,
                            com.atlassian.greenhopper.manager.properties,
                            com.atlassian.greenhopper.manager.rank,
                            com.atlassian.greenhopper.manager.rank.instruction,
                            com.atlassian.greenhopper.manager.rankableobject,
                            com.atlassian.greenhopper.manager.rapidview,
                            com.atlassian.greenhopper.manager.rapidview.events,
                            com.atlassian.greenhopper.manager.trackingstatistic,
                            com.atlassian.greenhopper.manager.version,
                            com.atlassian.greenhopper.manager.workingdays,
                            com.atlassian.greenhopper.model,
                            com.atlassian.greenhopper.model.charts,
                            com.atlassian.greenhopper.model.issue,
                            com.atlassian.greenhopper.model.lexorank,
                            com.atlassian.greenhopper.model.query,
                            com.atlassian.greenhopper.model.rapid,
                            com.atlassian.greenhopper.model.rapid.detailview,
                            com.atlassian.greenhopper.model.validation,
                            com.atlassian.greenhopper.obr.install,
                            com.atlassian.greenhopper.plugin,
                            com.atlassian.greenhopper.plugin.about,
                            com.atlassian.greenhopper.plugin.linkaggregator,
                            com.atlassian.greenhopper.plugin.module,
                            com.atlassian.greenhopper.plugin.projecttemplate,
                            com.atlassian.greenhopper.project,
                            com.atlassian.greenhopper.project.version,
                            com.atlassian.greenhopper.rest,
                            com.atlassian.greenhopper.sampledata,
                            com.atlassian.greenhopper.schema.querydsl.current,
                            com.atlassian.greenhopper.service,
                            com.atlassian.greenhopper.service.api.remote,
                            com.atlassian.greenhopper.service.charts,
                            com.atlassian.greenhopper.service.configuration,
                            com.atlassian.greenhopper.service.index,
                            com.atlassian.greenhopper.service.issue,
                            com.atlassian.greenhopper.service.issue.callback,
                            com.atlassian.greenhopper.service.issue.changehistory,
                            com.atlassian.greenhopper.service.issue.comment,
                            com.atlassian.greenhopper.service.issue.field,
                            com.atlassian.greenhopper.service.issue.flagging,
                            com.atlassian.greenhopper.service.issuelink,
                            com.atlassian.greenhopper.service.lexorank,
                            com.atlassian.greenhopper.service.lexorank.balance,
                            com.atlassian.greenhopper.service.lexorank.integrity,
                            com.atlassian.greenhopper.service.logging,
                            com.atlassian.greenhopper.service.lucene,
                            com.atlassian.greenhopper.service.osgi,
                            com.atlassian.greenhopper.service.project,
                            com.atlassian.greenhopper.service.properties,
                            com.atlassian.greenhopper.service.query,
                            com.atlassian.greenhopper.service.rank,
                            com.atlassian.greenhopper.service.rapid,
                            com.atlassian.greenhopper.service.rapid.view,
                            com.atlassian.greenhopper.service.rapid.view.cardlayout,
                            com.atlassian.greenhopper.service.rapid.view.color,
                            com.atlassian.greenhopper.service.rapid.view.detailview,
                            com.atlassian.greenhopper.service.rapid.view.event,
                            com.atlassian.greenhopper.service.rapid.view.statistics,
                            com.atlassian.greenhopper.service.rapid.view.subquery,
                            com.atlassian.greenhopper.service.rapid.view.workingdays,
                            com.atlassian.greenhopper.service.searchrequest,
                            com.atlassian.greenhopper.service.sprint,
                            com.atlassian.greenhopper.service.sprint.dao,
                            com.atlassian.greenhopper.service.sprint.dao.utils,
                            com.atlassian.greenhopper.service.sprint.event,
                            com.atlassian.greenhopper.service.sprint.health,
                            com.atlassian.greenhopper.service.sprint.services,
                            com.atlassian.greenhopper.service.sprint.services.analytics,
                            com.atlassian.greenhopper.service.subquery,
                            com.atlassian.greenhopper.service.timetracking,
                            com.atlassian.greenhopper.service.user,
                            com.atlassian.greenhopper.service.util,
                            com.atlassian.greenhopper.service.version,
                            com.atlassian.greenhopper.service.workflow,
                            com.atlassian.greenhopper.sidebar,
                            com.atlassian.greenhopper.sidebar.legacy,
                            com.atlassian.greenhopper.sidebar.navigation,
                            com.atlassian.greenhopper.upgrade,
                            com.atlassian.greenhopper.util,
                            com.atlassian.greenhopper.util.data,
                            com.atlassian.greenhopper.util.database,
                            com.atlassian.greenhopper.util.jql,
                            com.atlassian.greenhopper.util.jql.project,
                            com.atlassian.greenhopper.util.lucene,
                            com.atlassian.greenhopper.web,
                            com.atlassian.greenhopper.web.admin,
                            com.atlassian.greenhopper.web.api,
                            com.atlassian.greenhopper.web.conditions,
                            com.atlassian.greenhopper.web.configuration,
                            com.atlassian.greenhopper.web.contextprovider,
                            com.atlassian.greenhopper.web.contextprovider.issuedetailsview,
                            com.atlassian.greenhopper.web.footer,
                            com.atlassian.greenhopper.web.input,
                            com.atlassian.greenhopper.web.integration,
                            com.atlassian.greenhopper.web.migration,
                            com.atlassian.greenhopper.web.navigation,
                            com.atlassian.greenhopper.web.onboarding.chaperones,
                            com.atlassian.greenhopper.web.onboarding.data,
                            com.atlassian.greenhopper.web.onboarding.firstuseflow,
                            com.atlassian.greenhopper.web.project,
                            com.atlassian.greenhopper.web.rank,
                            com.atlassian.greenhopper.web.rapid,
                            com.atlassian.greenhopper.web.rapid.chart,
                            com.atlassian.greenhopper.web.rapid.chart.burndown,
                            com.atlassian.greenhopper.web.rapid.chart.event,
                            com.atlassian.greenhopper.web.rapid.chart.integration,
                            com.atlassian.greenhopper.web.rapid.chart.sprintreportfactory,
                            com.atlassian.greenhopper.web.rapid.chart.time,
                            com.atlassian.greenhopper.web.rapid.config.tab,
                            com.atlassian.greenhopper.web.rapid.data,
                            com.atlassian.greenhopper.web.rapid.entity.common,
                            com.atlassian.greenhopper.web.rapid.entity.epic,
                            com.atlassian.greenhopper.web.rapid.entity.sprint,
                            com.atlassian.greenhopper.web.rapid.epics,
                            com.atlassian.greenhopper.web.rapid.event,
                            com.atlassian.greenhopper.web.rapid.issue,
                            com.atlassian.greenhopper.web.rapid.issue.attachment,
                            com.atlassian.greenhopper.web.rapid.issue.fields,
                            com.atlassian.greenhopper.web.rapid.issue.issuelink,
                            com.atlassian.greenhopper.web.rapid.issue.operations,
                            com.atlassian.greenhopper.web.rapid.issue.statistics,
                            com.atlassian.greenhopper.web.rapid.issue.tabs,
                            com.atlassian.greenhopper.web.rapid.issue.tabs.editable,
                            com.atlassian.greenhopper.web.rapid.issue.tabs.editable.factory,
                            com.atlassian.greenhopper.web.rapid.issue.tabs.editable.utils,
                            com.atlassian.greenhopper.web.rapid.list,
                            com.atlassian.greenhopper.web.rapid.plan,
                            com.atlassian.greenhopper.web.rapid.plan.splitissue,
                            com.atlassian.greenhopper.web.rapid.project,
                            com.atlassian.greenhopper.web.rapid.release,
                            com.atlassian.greenhopper.web.rapid.response,
                            com.atlassian.greenhopper.web.rapid.sprint,
                            com.atlassian.greenhopper.web.rapid.sprint.model,
                            com.atlassian.greenhopper.web.rapid.tools,
                            com.atlassian.greenhopper.web.rapid.version,
                            com.atlassian.greenhopper.web.rapid.view,
                            com.atlassian.greenhopper.web.rapid.view.cardlayout,
                            com.atlassian.greenhopper.web.rapid.view.detailview,
                            com.atlassian.greenhopper.web.rapid.view.workingdays,
                            com.atlassian.greenhopper.web.rapid.welcome,
                            com.atlassian.greenhopper.web.rapid.work,
                            com.atlassian.greenhopper.web.rapid.workflow,
                            com.atlassian.greenhopper.web.remote,
                            com.atlassian.greenhopper.web.sidebar,
                            com.atlassian.greenhopper.web.transformer.transformer,
                            com.atlassian.greenhopper.web.util,
                            com.atlassian.greenhopper.webhooks,
                            com.atlassian.greenhopper.webhooks.board,
                            com.atlassian.greenhopper.webhooks.sprint,
                            com.atlassian.greenhopper.workflow,
                            com.pyxis.greenhopper.jira.actions,
                            com.pyxis.greenhopper.jira.customfields,
                            com.pyxis.greenhopper.jira.license,
                            com.pyxis.greenhopper.jira.license.old
                        </Export-Package>
                        <Bundle-SymbolicName>${atlassian.plugin.key}</Bundle-SymbolicName>
						<Private-Package>
                        </Private-Package>
                        <DynamicImport-Package>
                            com.atlassian.jira.plugins.importer.external.beans,
                            com.atlassian.jira.plugins.importer.sample,
                            com.atlassian.jira.projects.agile,
                            com.atlassian.jira.projects.api.sidebar,
                            com.atlassian.jira.projects.api.sidebar.navigation,
                            com.atlassian.jira.projects.sidebar.navigation,
                            com.atlassian.jira.projects.legacy,
                            com.atlassian.jira.projects.darkfeature,
                            com.atlassian.jira.projects.sidebar.ancillary.*,
                            com.atlassian.webresource.api.assembler,
                        </DynamicImport-Package>
                        <Import-Package>
                            <!--Star imports must sit below matching non stars-->
                            com.atlassian.activeobjects.tx;version="0.19",
                            com.atlassian.activeobjects.spi.*,
                            com.atlassian.analytics.api.annotations;resolution:="optional",
                            com.atlassian.annotations.security,
                            com.atlassian.application.api.*;resolution:="optional",
                            com.atlassian.applinks.core;resolution:="optional",
                            com.atlassian.applinks.api.*;version="3.6",
                            com.atlassian.applinks.host.spi.*;version="3.6",
                            com.atlassian.audit.api.*,
                            com.atlassian.audit.entity.*,
                            com.atlassian.beehive.*,
                            com.atlassian.cache;resolution:="optional",
                            com.atlassian.collectors.*;version="1.1",
                            com.atlassian.core.*,
                            com.atlassian.crowd.*,
                            com.atlassian.event.api;version="2.1",
                            com.atlassian.extras.*;version="2.2.2",
                            io.atlassian.fugue,
                            com.atlassian.fugue,
                            com.atlassian.gadgets.*;version="3.1",
                            com.atlassian.healthcheck.core.*;resolution:="optional",
                            com.atlassian.webhooks,
                            com.atlassian.jira.webhooks,
                            com.atlassian.jira.bc.*,
                            com.atlassian.jira.blueprint.api;resolution:="optional",
                            com.atlassian.jira.components.issueviewer.*,
                            com.atlassian.jira.components.issueeditor.*,
                            com.atlassian.jira.event.mau;resolution:="optional",
                            com.atlassian.jira.onboarding;resolution:="optional",
                            com.atlassian.jira.issue.status.category;resolution:="optional",
                            com.atlassian.jira.issue.*
                            com.atlassian.jira.imports.project.ao.handler;resolution:="optional",
                            com.atlassian.jira.filter;resolution:="optional",
                            com.atlassian.jira.permission.data;resolution:="optional",
                            com.atlassian.jira.plugin.attachment;resolution:="optional",
                            com.atlassian.jira.plugin.issuetabpanel,
                            com.atlassian.jira.plugin.viewissue,
                            com.atlassian.jira.plugin.viewissue.conditions,
                            com.atlassian.jira.plugin.viewissue.issuelink,
                            com.atlassian.jira.plugin.link.applinks;resolution:="optional",
                            com.atlassian.jira.plugin.link.confluence.*;resolution:="optional",
                            com.atlassian.jira.plugin.webfragment.*,
                            com.atlassian.jira.plugins.importer.external.beans,
                            com.atlassian.jira.plugins.importer.sample,
                            com.atlassian.jira.workflow.migration.enterprise;resolution:="optional",
                            com.atlassian.jira.projecttemplates;resolution:="optional",
                            com.atlassian.jira.application;resolution:="optional",
                            com.atlassian.jira.config.managedconfiguration;resolution:="optional",
                            com.atlassian.jira.config.properties,
                            com.atlassian.jira.entity.property;resolution:="optional",
                            com.atlassian.jira.project.template.hook;resolution:="optional",
                            com.atlassian.jira.project.template;resolution:="optional",
                            com.atlassian.jira.project.template.descriptor;resolution:="optional",
                            com.atlassian.jira.project.type;resolution:="optional",
                            com.atlassian.jira.projects.agile;resolution:="optional",
                            com.atlassian.jira.projects.api.sidebar;resolution:="optional",
                            com.atlassian.jira.projects.api.sidebar.navigation;resolution:="optional",
                            com.atlassian.jira.projects.darkfeature;resolution:="optional",
                            com.atlassian.jira.projects.legacy;resolution:="optional",
                            com.atlassian.jira.projects.unlicensed;resolution:="optional",
                            !com.atlassian.jira.projects.sidebar.ancillary.*,
                            com.atlassian.jira.permission,
                            com.atlassian.jira.security.roles,
                            com.atlassian.jira.util.johnson;resolution:="optional",
                            com.atlassian.jira.util.*,
                            com.atlassian.jira.user.preferences,
                            com.atlassian.jira.web.filters.mau;resolution:="optional",
                            com.atlassian.jira.*;version="7.0.0", <!-- beware this must sit below other jira matches -->
                            com.atlassian.johnson,
                            com.atlassian.json.marshal;resolution:="optional",
                            com.atlassian.json.marshal.wrapped;resolution:="optional",
                            com.atlassian.license;version="2.2.2",
                            com.atlassian.linkaggregation;resolution:="optional",
                            com.atlassian.mail;version="2.2",
                            com.atlassian.plugin.web.api;resolution:="optional",
                            com.atlassian.plugin.web.api.model;resolution:="optional",
                            com.atlassian.plugin.web.api.provider;resolution:="optional",
                            com.atlassian.plugin.web.*;resolution:="optional",
                            com.atlassian.plugin.webresource,
                            com.atlassian.plugin.webresource.transformer,
                            com.atlassian.plugin.webresource.url,
                            com.atlassian.webresource.spi.condition,
                            com.atlassian.webresource.spi.transformer,
                            com.atlassian.plugin.*;version="2.10.1", <!-- beware this must sit below other plugin matches -->
                            com.atlassian.plugins.rest.api.*,
                            com.atlassian.plugins.capabilities.api;resolution:="optional",
                            com.atlassian.query.*,
                            com.atlassian.ozymandias.*;version="0.10.0",
                            com.atlassian.sal.api.*;version="2.6",
                            com.atlassian.scheduler;version="${atlassian.scheduler.version}";resolution:="optional",
                            com.atlassian.scheduler.config;version="${atlassian.scheduler.version}";resolution:="optional",
                            com.atlassian.scheduler.status;version="${atlassian.scheduler.version}";resolution:="optional",
                            com.atlassian.templaterenderer;version="1.3",
                            com.atlassian.upm.*;resolution:="optional",
                            com.atlassian.util.profiling;version="1.8.2",
                            com.atlassian.webresource.api.*,
                            com.atlassian.soy.*,
                            com.atlassian.webresource.api.data;version="${webresource.version}";resolution:="optional",
                            com.atlassian.webresource.api.prebake;resolution:="optional",
                            com.fasterxml.jackson.*,
                            com.google.common.*,
                            com.opensymphony.*,
                            javax.annotation,
                            javax.inject,
                            javax.mail.internet,
                            javax.servlet,
                            javax.servlet.http,
                            javax.ws.rs.core,
                            javax.ws.rs,
                            javax.xml.bind.annotation;version="2.1.0",
                            javax.xml.parsers,
                            javax.security.auth,
                            net.java.ao.*;version="1.2.1",
                            io.swagger.v3.oas.annotations,
                            io.swagger.v3.oas.annotations*,
                            io.swagger.v3.oas.annotations.*,
                            org.apache.commons.collections;version="3.2",
                            org.apache.commons.collections.comparators;version="3.2",
                            org.apache.commons.httpclient;version="3.0",
                            org.apache.commons.httpclient.auth;version="3.0",
                            org.apache.commons.io;version="1.4",
                            org.apache.commons.lang.*,
                            org.apache.commons.lang3.*,
                            org.apache.commons.text.*,
                            org.apache.commons.logging;version="1.1",
                            org.apache.http,
                            org.apache.http.message,
                            org.apache.http.params,
                            org.apache.http.client.utils,
                            org.apache.http.client;version="4.0",
                            org.apache.http.client.entity;version="4.0",
                            org.apache.http.client.methods;version="4.0",
                            org.apache.http.conn;version="4.0",
                            org.apache.http.conn.routing;version="4.0",
                            org.apache.http.conn.scheme;version="4.0",
                            org.apache.http.conn.ssl;version="4.0",
                            org.apache.http.entity.mime;version="4.0",
                            org.apache.http.entity.mime.content;version="4.0",
                            org.apache.http.impl.client;version="4.0",
                            org.apache.http.impl.conn;version="4.0",
                            org.apache.log4j,
                            org.apache.logging.log4j.*,
                            org.apache.lucene.document;version="3.2.0",
                            org.apache.lucene.index;version="3.2.0",
                            org.apache.lucene.search;version="3.2.0",
                            org.apache.lucene.util;version="3.2.0",
                            org.dom4j,
                            org.dom4j.*,
                            org.jfree.chart.*;version="1.0.13",
                            org.jfree.data.*;version="1.0.13",
                            org.jfree.ui;version="1.0.8",
                            org.jfree.util;version="1.0.8",
                            org.joda.time.format;version="2.0",
                            org.joda.time;version="2.0",
                            org.ofbiz.core.*;version="1.0.14",
                            org.osgi.framework.*,
                            org.osgi.util.*,
                            org.slf4j;version="1.5",
                            org.springframework.beans.*,
                            org.springframework.beans.factory.*,
                            org.springframework.beans.factory.annotation.*,
                            org.springframework.beans.factory.config.*,
                            org.springframework.context.*,
                            org.springframework.stereotype.*,
                            org.springframework.util.*,
                            org.xml.sax.helpers.*,
                            org.w3c.dom.*,
                            org.xml.sax.*,
                            webwork.action.*;version="1.4",
                            webwork.dispatcher.*;version="1.4"
                        </Import-Package>
						<Spring-Context>*</Spring-Context>
                        <Atlassian-Scan-Folders>META-INF/plugin-descriptors</Atlassian-Scan-Folders>
                    </instructions>
                    <testInstructions>
                        <Export-Package>
                            it
                        </Export-Package>
                        <Import-Package>
                            com.atlassian.greenhopper.service,
                            com.atlassian.greenhopper.model.validation,
                            com.atlassian.greenhopper.api.rapid.view,
                            org.slf4j
                        </Import-Package>
                        <Private-Package>
                        </Private-Package>
                        <DynamicImport-Package>
                            *
                        </DynamicImport-Package>
                        <Spring-Context>*</Spring-Context>
                    </testInstructions>

                    <productVersion>${jira.version}</productVersion>
					<!--<productDataVersion>${jira.data.version}</productDataVersion>-->
                    <!--<productDataPath>${gh.data}</productDataPath>-->
					<log4j2Config>src/test/resources/log4j2-test.xml</log4j2Config>

					<pluginArtifacts>
						<pluginArtifact>
                            <groupId>com.atlassian.plugins.jstestrunner</groupId>
                            <artifactId>atlassian-jstest-runner-plugin</artifactId>
                            <version>${atlassian.jstest.runner.plugin.version}</version>
						</pluginArtifact>
                        <pluginArtifact>
                            <groupId>com.atlassian.jira.plugins</groupId>
                          	<artifactId>greenhopper-client-plugin</artifactId>
                            <version>${project.version}</version>
                        </pluginArtifact>
                        <pluginArtifact>
                            <groupId>com.atlassian.jira.plugins</groupId>
                            <artifactId>greenhopper-dev-extensions</artifactId>
                            <version>${project.version}</version>
                        </pluginArtifact>
					</pluginArtifacts>
                    <testBundleExcludes>
                        <testBundleExclude>
                            <groupId>atlassian</groupId>
                        </testBundleExclude>
                        <testBundleExclude>
                            <groupId>junit</groupId>
                            <artifactId>junit-dep</artifactId>
                        </testBundleExclude>
                    </testBundleExcludes>
				</configuration>
                <executions>
                    <execution>
                        <id>js-enforcement</id>
                        <goals>
                            <goal>verify-fe-manifest-associations</goal>
                        </goals>
                        <phase>verify</phase>
                        <configuration>
                            <verifyFeManifestAssociationsInputEntrypoint>
                                ${project.build.directory}/${project.build.finalName}.jar
                            </verifyFeManifestAssociationsInputEntrypoint>
                            <failOnUndeclaredFiles>false</failOnUndeclaredFiles>
                        </configuration>
                    </execution>
                </executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
                    <forkMode>never</forkMode>
					<argLine>${jvmOpens} -Xmx1024m</argLine>
                    <systemPropertyVariables>
                        <ao.test.database.url>${ao.test.database.url}</ao.test.database.url>
                        <ao.test.database.schema>${ao.test.database.schema}</ao.test.database.schema>
                        <ao.test.database.username>${ao.test.database.username}</ao.test.database.username>
                        <ao.test.database.password>${ao.test.database.password}</ao.test.database.password>
                    </systemPropertyVariables>
                    <excludes>
                        <exclude>${wired.integration.test.pattern}</exclude>
                    </excludes>
				</configuration>
			</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>
                                        <!-- We depend on jira-api and jira-core instead -->
                                        <exclude>com.atlassian.jira:atlassian-jira</exclude>
                                        <!-- We depend on guava instead -->
                                        <exclude>com.google.collections:google-collections</exclude>
                                        <!-- common logging plays badly with OSGi and we use SLF4j instead -->
                                        <exclude>commons-logging:commons-logging</exclude>
                                        <!-- We depend on jackson-core-asl and jackson-mapper-asl instead -->
                                        <exclude>org.codehaus.jackson:jackson-core-lgpl</exclude>
                                        <exclude>org.codehaus.jackson:jackson-mapper-lgpl</exclude>
                                    </excludes>
                                    <message>Please check dependency:tree for banned dependencies</message>
                                    <searchTransitive>true</searchTransitive>
                                </bannedDependencies>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
			<plugin>
				<groupId>com.atlassian.maven.plugins</groupId>
				<artifactId>maven-clover2-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>**/com/pyxis/**/*.java</exclude>
						<!-- dev mode code -->
						<exclude>**/greenhopper/dev/*</exclude>
					</excludes>
					<generateHistorical>true</generateHistorical>
					<historyDir>${project.build.directory}/../clover_history</historyDir>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>findbugs-maven-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<findbugsXmlOutput>true</findbugsXmlOutput>
					<xmlOutput>true</xmlOutput>
					<omitVisitors>UnreadFields,SerializableIdiom</omitVisitors>
					<excludeFilterFile>${basedir}/src/main/config/findbugs-exclude.xml</excludeFilterFile>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<configuration>
					<rulesets>
						<ruleset>/rulesets/basic.xml</ruleset>
						<ruleset>/rulesets/imports.xml</ruleset>
					</rulesets>
					<excludes>
					    <exclude>com/pyxis/**</exclude>
					</excludes>
				</configuration>
			</plugin>
			<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>ro.isdc.wro4j</groupId>
                <artifactId>wro4j-maven-plugin</artifactId>
                <configuration>
                    <options>browser,devel,jquery,eqnull,expr,forin,latedef,noarg,sub,laxbreak,nonew</options><!-- TODO: add: eqeqeq,undef, remove: eqnull,laxbreak -->
                    <ignoreMissingResources>false</ignoreMissingResources>
                    <failNever>false</failNever>
                    <wroFile>${basedir}/src/main/resources/wro.xml</wroFile>
                    <contextFolder>${basedir}/src/main/resources</contextFolder>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>01-generate-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath" />

                                <tstamp>
                                    <format property="touch.time" pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ" />
                                </tstamp>
                                <copy file="${project.build.sourceDirectory}/com/atlassian/greenhopper/util/BuildPropertiesImpl.java.template" tofile="${project.build.sourceDirectory}/com/atlassian/greenhopper/util/BuildPropertiesImpl.java" overwrite="true" />
                                <replace file="${project.build.sourceDirectory}/com/atlassian/greenhopper/util/BuildPropertiesImpl.java" token="@BUILD_DATE@" value="${touch.time}" />
                                <replace file="${project.build.sourceDirectory}/com/atlassian/greenhopper/util/BuildPropertiesImpl.java" token="@VERSION@" value="${project.version}" />
                                <replace file="${project.build.sourceDirectory}/com/atlassian/greenhopper/util/BuildPropertiesImpl.java" token="@CHANGE_SET@" value="${buildNumber}" />
                            </target>
                        </configuration>
                    </execution>
                    <execution>
                        <id>03-schemaGen-plugin-description-copy</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <skip>${gh.schemaGen.skip}</skip>
                            <target>
                                    <copy file="${project.build.outputDirectory}/resourcedoc.xml" tofile="${restdoc.directory}/resourcedoc.xml" />
                            </target>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>ant-contrib</groupId>
                        <artifactId>ant-contrib</artifactId>
                        <version>1.0b3</version>
                        <exclusions>
                            <exclusion>
                                <groupId>ant</groupId>
                                <artifactId>ant</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                </dependencies>
            </plugin>
            <!-- This plugin determines the help paths URL version to use based on the project.version value -->
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>docsversion-maven-plugin</artifactId>
                <version>2.0.0</version>
                <executions>
                    <execution>
                        <id>set-docs-version-property</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>set-property</goal>
                        </goals>
                        <configuration>
                            <skip>${gh.set.docs.version.skip}</skip>
                            <property>gh.docs.version</property>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
	</build>

	<dependencies>

        <!-- WIRED TEST RUNNER DEPENDENCIES -->

        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-plugins-osgi-testrunner</artifactId>
            <version>${plugin.testrunner.version}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>junit</artifactId>
                    <groupId>junit</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>junit</artifactId>
                    <groupId>junit-dep</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- API -->
        <dependency>
            <groupId>com.atlassian.jira.plugins</groupId>
            <artifactId>jira-greenhopper-api</artifactId>
            <scope>compile</scope>
        </dependency>

        <!-- JIM -->
        <dependency>
            <groupId>com.atlassian.jira.plugins</groupId>
            <artifactId>jira-importers-plugin</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- GreenHopper-Jira bridge -->
        <dependency>
            <groupId>com.atlassian.jira.plugins</groupId>
            <artifactId>greenhopper-jira-bridge</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- REST API -->
        <dependency>
            <groupId>com.atlassian.jira.plugins</groupId>
            <artifactId>greenhopper-rest</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Issue Links -->
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-view-issue-plugin</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- issue detail view -->
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-issue-nav-components</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-issue-nav-plugin</artifactId>
            <scope>provided</scope>
        </dependency>

        <!--feedback stuff-->
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-rest-plugin</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient-osgi</artifactId>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Sidebar -->
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-projects-plugin</artifactId>
            <scope>provided</scope>
        </dependency>

		<!-- Compile time deps -->
        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.20</version>
            <scope>test</scope>
        </dependency>
		<dependency>
			<groupId>xpp3</groupId>
			<artifactId>xpp3</artifactId>
		</dependency>
        <dependency>
            <groupId>io.atlassian.util.concurrent</groupId>
            <artifactId>atlassian-util-concurrent</artifactId>
        </dependency>

        <!-- licensing deps -->
        <dependency>
            <groupId>com.atlassian.upm</groupId>
            <artifactId>licensing-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.upm</groupId>
            <artifactId>upm-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.upm</groupId>
            <artifactId>licensing-lib</artifactId>
            <version>${upm.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- Jira Project Templates -->
        <dependency>
            <groupId>com.atlassian.jira.plugins</groupId>
            <artifactId>project-templates-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- Health Checks -->
        <dependency>
            <groupId>com.atlassian.healthcheck</groupId>
            <artifactId>atlassian-healthcheck</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- provided deps -->
		<dependency>
			<groupId>com.atlassian.templaterenderer</groupId>
			<artifactId>atlassian-template-renderer-api</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.atlassian.jira</groupId>
			<artifactId>jira-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-core</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.atlassian.adapter</groupId>
                    <artifactId>jackson</artifactId>
                </exclusion>
            </exclusions>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <scope>provided</scope>
        </dependency>
		<dependency>
			<groupId>com.atlassian.sal</groupId>
			<artifactId>sal-api</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>webwork</groupId>
			<artifactId>webwork-jira</artifactId>
			<version>1.5.3</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>jfree</groupId>
			<artifactId>jfreechart</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>jfree</groupId>
			<artifactId>jcommon</artifactId>
			<scope>provided</scope>
		</dependency>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-issue-link-applinks-common-plugin</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-issue-link-confluence-plugin</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>jakarta.annotation</groupId>
          <artifactId>jakarta.annotation-api</artifactId>
          <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- provided by plugin framework -->
        <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
            <scope>provided</scope>
        </dependency>
		<dependency>
            <groupId>com.atlassian.activeobjects</groupId>
            <artifactId>activeobjects-plugin</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.cache</groupId>
            <artifactId>atlassian-cache-compat</artifactId>
        </dependency>

        <!-- test deps -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
        <dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId>
			<scope>test</scope>
		</dependency>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-tests</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.hamcrest</groupId>
                    <artifactId>hamcrest-library</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.atlassian.activeobjects</groupId>
			<artifactId>activeobjects-test</artifactId>
			<scope>test</scope>
		</dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-library</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.labs.mockito</groupId>
            <artifactId>mockito-booster</artifactId>
            <scope>test</scope>
        </dependency>

       <!-- REST API Documentation deps -->
        <dependency>
            <groupId>com.atlassian.plugins.rest</groupId>
            <artifactId>atlassian-rest-v2-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins.rest</groupId>
            <artifactId>atlassian-rest-v2-internal-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins.rest</groupId>
            <artifactId>atlassian-rest-v2-plugin</artifactId>
            <version>7.2.7</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.json</groupId>
            <artifactId>atlassian-json-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.pocketknife</groupId>
            <artifactId>atlassian-pocketknife-dynamic-modules</artifactId>
            <version>${pocketknife.dynamic-modules.version}</version>
        </dependency>

        <dependency>
            <groupId>com.atlassian.pocketknife</groupId>
            <artifactId>atlassian-pocketknife-querydsl</artifactId>
            <version>${pocketknife.query-dsl.version}</version>
        </dependency>

        <dependency>
            <groupId>com.atlassian.scheduler</groupId>
            <artifactId>atlassian-scheduler-compat</artifactId>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-nav-links-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>remote-link-aggregator-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.jira.compat</groupId>
            <artifactId>jira-cross-compatibility-lib-bridge-factory</artifactId>
            <scope>compile</scope>
            <version>${jira.cross.compatibility.lib.version}</version>
        </dependency>

        <!-- Atlassian WebHooks -->
        <dependency>
            <groupId>com.atlassian.webhooks</groupId>
            <artifactId>atlassian-webhooks-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.webhooks</groupId>
            <artifactId>atlassian-webhooks-spi</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
        </dependency>

        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.plugin</groupId>
            <artifactId>atlassian-spring-scanner-annotation</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

	<properties>
        <ao.test.database.hostname>localhost</ao.test.database.hostname>
        <ao.test.database.url>jdbc:hsqldb:mem:ao_test</ao.test.database.url>
        <ao.test.database.schema>PUBLIC</ao.test.database.schema>
        <ao.test.database.username>sa</ao.test.database.username>
        <ao.test.database.password />
        <atlassian.dev.mode>false</atlassian.dev.mode>
        <atlassian.webresource.disable.minification>false</atlassian.webresource.disable.minification>
        <plugin.webresource.batching.off>true</plugin.webresource.batching.off>
        <frontend.install.cmd>${frontend.install.cmd.forDevelopment}</frontend.install.cmd>
        <frontend.build.mode>production</frontend.build.mode>
        <jira.integration.version>${jira.version}</jira.integration.version>
        <jira.integration.data.version>${jira.integration.version}</jira.integration.data.version>
        <jira.issue.nav.components.version>20.0.0-2e4d1ff6f</jira.issue.nav.components.version>
        <jira.issue.nav.plugin.version>${jira.issue.nav.components.version}</jira.issue.nav.plugin.version>
        <atlassian.plugin.key>com.pyxis.greenhopper.jira</atlassian.plugin.key>
        <atlassian.upm.on.demand>false</atlassian.upm.on.demand> <!-- upm licensing differs in On Demand environments -->
        <gh.data>src/test/resources/generated-test-resources.zip</gh.data>
        <gh.data.qa>src/test/resources/home.zip</gh.data.qa>
        <gh.schemaGen.skip>${maven.javadoc.skip}</gh.schemaGen.skip>
        <gh.set.docs.version.skip>false</gh.set.docs.version.skip>
        <pac.baseurl>http://pac-dev.private.atlassian.com/server</pac.baseurl>
        <xvfb.enable>true</xvfb.enable>
        <project.template.version>7.0.2</project.template.version>
        <rebel.generate.show>true</rebel.generate.show>
        <pocketknife.dynamic-modules.version>3.0.3</pocketknife.dynamic-modules.version>
        <pocketknife.query-dsl.version>0.80</pocketknife.query-dsl.version>
        <od.testing.configuration>
            use-maven,3
            include-artifact,com.atlassian.jira.plugins:jira-greenhopper-ondemand-acceptance-tests
        </od.testing.configuration>
        <wired.integration.test.pattern>it/**/*WiredTest.java</wired.integration.test.pattern>
        <wired.integration.test.directory>../greenhopper-wired-integration-test/src/test/java</wired.integration.test.directory>
        <additional.path />

        <guava.version>32.1.3-jre</guava.version>
        <gson.version>2.10.1</gson.version>
        <reflections.version>0.9.11</reflections.version>

        <!-- This file is created during compilation based on a template and includes a timestamp that keeps changing -->
        <maven.build.cache.exclude.buildProperties>${project.basedir}/src/main/java/com/atlassian/greenhopper/util/BuildPropertiesImpl.java</maven.build.cache.exclude.buildProperties>

        <!-- default values to enable the FE SBOM verification in AMPS -->
        <verifyFeManifestAssociationsFailOnUndeclaredFiles>true</verifyFeManifestAssociationsFailOnUndeclaredFiles>
        <verifyFeManifestAssociationsFailOnExtraDeclarations>true</verifyFeManifestAssociationsFailOnExtraDeclarations>
        <skipReportFeManifestAssociations>false</skipReportFeManifestAssociations>
    </properties>
</project>
