<?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">
  <parent>
    <artifactId>portfolio-1</artifactId>
    <groupId>com.atlassian.rm</groupId>
    <version>9.4.20</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>jira-portfolio-testserver</artifactId>
  <name>Portfolio for Jira [Test Server and Integration Tests]</name>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.3</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <finalName>${project.artifactId}-${project.version}</finalName>
          <transformers>
            <transformer>
              <manifestEntries>
                <Main-Class>com.radiantminds.roadmap.testserver.TestServerMain</Main-Class>
              </manifestEntries>
            </transformer>
            <transformer />
            <transformer>
              <resource>META-INF/spring.handlers</resource>
            </transformer>
            <transformer>
              <resource>META-INF/spring.schemas</resource>
            </transformer>
          </transformers>
          <filters>
            <filter>
              <artifact>com.atlassian:jira-portfolio</artifact>
              <excludes>
                <exclude>**/com/sun/jersey/**/*.*</exclude>
                <exclude>**/com/sun/research/ws/wadl/**/*.*</exclude>
              </excludes>
            </filter>
            <filter>
              <artifact>*:*</artifact>
              <excludes>
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
              </excludes>
            </filter>
          </filters>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>jira-it</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <skipTests>true</skipTests>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>integration-hsql</id>
      <properties>
        <jdbc.url>jdbc:hsqldb:database/${db.instance}</jdbc.url>
        <db.username>SA</db.username>
        <db.schema>PUBLIC</db.schema>
      </properties>
    </profile>
    <profile>
      <id>integration-postgres</id>
      <build>
        <plugins>
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>start</id>
                <phase>none</phase>
                <goals>
                  <goal>start</goal>
                </goals>
              </execution>
              <execution>
                <id>stop</id>
                <phase>none</phase>
                <goals>
                  <goal>stop</goal>
                  <goal>remove</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <autoPull>always</autoPull>
              <removeVolumes>true</removeVolumes>
              <images>
                <image>
                  <alias>postgres-db</alias>
                  <name>postgres:${db.version}</name>
                  <run>
                    <env>
                      <POSTGRES_USER>${db.username}</POSTGRES_USER>
                      <POSTGRES_PASSWORD>${db.password}</POSTGRES_PASSWORD>
                      <POSTGRES_DB>${db.instance}</POSTGRES_DB>
                    </env>
                    <ports>
                      <port>${db.port}:5432</port>
                    </ports>
                    <wait>
                      <log>database system is ready to accept connections</log>
                      <time>100000</time>
                      <kill>5000</kill>
                      <shutdown>2000</shutdown>
                    </wait>
                    <log>
                      <enabled>true</enabled>
                    </log>
                  </run>
                </image>
              </images>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <jdbc.url>jdbc:postgresql://${db.host}:${db.port}/${db.instance}</jdbc.url>
        <db.password>postgres</db.password>
        <db.port>15432</db.port>
        <db.username>postgres</db.username>
        <db.version>${postgres.db.version}</db.version>
      </properties>
    </profile>
    <profile>
      <id>integration-mysql</id>
      <build>
        <plugins>
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>start</id>
                <phase>none</phase>
                <goals>
                  <goal>start</goal>
                </goals>
              </execution>
              <execution>
                <id>stop</id>
                <phase>none</phase>
                <goals>
                  <goal>stop</goal>
                  <goal>remove</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <autoPull>always</autoPull>
              <removeVolumes>true</removeVolumes>
              <images>
                <image>
                  <alias>mysql-db</alias>
                  <name>${mysql.docker.repo}:${db.version}</name>
                  <run>
                    <env>
                      <MYSQL_USER>${db.username}</MYSQL_USER>
                      <MYSQL_PASSWORD>${db.password}</MYSQL_PASSWORD>
                      <MYSQL_ROOT_PASSWORD>${db.password}</MYSQL_ROOT_PASSWORD>
                      <MYSQL_DATABASE>${db.instance}</MYSQL_DATABASE>
                    </env>
                    <ports>
                      <port>${db.port}:3306</port>
                    </ports>
                    <wait>
                      <log>MySQL init process done. Ready for start up|mysqld: ready for connections</log>
                      <time>100000</time>
                      <kill>5000</kill>
                      <shutdown>2000</shutdown>
                    </wait>
                  </run>
                </image>
              </images>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <db.port>13306</db.port>
        <db.username>mysql50</db.username>
        <db.version>latest</db.version>
        <db.instance>jpo</db.instance>
        <jdbc.url>${jdbc.url.nodb}/${db.instance}?allowMultiQueries=true</jdbc.url>
        <jdbc.url.nodb>jdbc:mysql://${db.host}:${db.port}</jdbc.url.nodb>
        <jdbc.driver>com.mysql.cj.jdbc.Driver</jdbc.driver>
        <db.schema>public</db.schema>
        <db.password>mysql50</db.password>
      </properties>
    </profile>
    <profile>
      <id>integration-mssql</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <version>${sql.maven.version}</version>
            <executions>
              <execution>
                <id>drop-database</id>
                <phase>validate</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <autocommit>true</autocommit>
                  <delimiterType>row</delimiterType>
                  <delimiter>GO</delimiter>
                  <enableFiltering>true</enableFiltering>
                  <srcFiles>
                    <srcFile>src/test/resources/mssql-clean.sql</srcFile>
                  </srcFiles>
                  <onError>continue</onError>
                </configuration>
              </execution>
              <execution>
                <id>create-db</id>
                <phase>initialize</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <autocommit>true</autocommit>
                  <delimiterType>row</delimiterType>
                  <delimiter>GO</delimiter>
                  <enableFiltering>true</enableFiltering>
                  <srcFiles>
                    <srcFile>src/test/resources/mssql-start.sql</srcFile>
                  </srcFiles>
                  <onError>abort</onError>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>net.sourceforge.jtds</groupId>
                <artifactId>jtds</artifactId>
                <version>${jtds.version}</version>
              </dependency>
            </dependencies>
            <configuration>
              <username>${db.admin.username}</username>
              <password>${db.admin.password}</password>
              <url>${jdbc.url.nodb}</url>
              <driver>${jdbc.driver}</driver>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <db.admin.username>sa</db.admin.username>
        <db.admin.password>@!1234abc</db.admin.password>
        <db.port>1433</db.port>
        <db.username>jpo</db.username>
        <jdbc.url>${jdbc.url.nodb}/${db.instance}</jdbc.url>
        <db.instance>jpo</db.instance>
        <jdbc.url.nodb>jdbc:jtds:sqlserver://${db.host}:${db.port}/</jdbc.url.nodb>
        <jdbc.driver>net.sourceforge.jtds.jdbc.Driver</jdbc.driver>
        <db.schema>jposchema</db.schema>
        <db.password>jpo</db.password>
      </properties>
    </profile>
    <profile>
      <id>integration-mssql-linux</id>
      <build>
        <plugins>
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>start</id>
                <phase>none</phase>
                <goals>
                  <goal>start</goal>
                </goals>
              </execution>
              <execution>
                <id>stop</id>
                <phase>none</phase>
                <goals>
                  <goal>stop</goal>
                  <goal>remove</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <autoPull>always</autoPull>
              <removeVolumes>true</removeVolumes>
              <images>
                <image>
                  <alias>mssql-db</alias>
                  <name>${docker.image}:${db.version}-latest</name>
                  <run>
                    <env>
                      <SA_PASSWORD>${jdbc.admin.password}</SA_PASSWORD>
                      <MSSQL_PID>Developer</MSSQL_PID>
                      <ACCEPT_EULA>Y</ACCEPT_EULA>
                    </env>
                    <ports>
                      <port>${jdbc.port}:${mssql.port}</port>
                    </ports>
                    <wait>
                      <log>Service Broker manager has started</log>
                      <time>100000</time>
                      <kill>5000</kill>
                      <shutdown>2000</shutdown>
                    </wait>
                    <log>
                      <enabled>true</enabled>
                    </log>
                  </run>
                </image>
              </images>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <version>${sql.maven.version}</version>
            <executions>
              <execution>
                <id>drop-database</id>
                <phase>validate</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <autocommit>true</autocommit>
                  <delimiterType>row</delimiterType>
                  <delimiter>GO</delimiter>
                  <enableFiltering>true</enableFiltering>
                  <srcFiles>
                    <srcFile>src/test/resources/mssql-clean.sql</srcFile>
                  </srcFiles>
                  <onError>continue</onError>
                </configuration>
              </execution>
              <execution>
                <id>create-db</id>
                <phase>initialize</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <autocommit>true</autocommit>
                  <delimiterType>row</delimiterType>
                  <delimiter>GO</delimiter>
                  <enableFiltering>true</enableFiltering>
                  <srcFiles>
                    <srcFile>src/test/resources/mssql-start.sql</srcFile>
                  </srcFiles>
                  <onError>abort</onError>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>com.microsoft.sqlserver</groupId>
                <artifactId>mssql-jdbc</artifactId>
                <version>${mssql.jdbc.version}</version>
              </dependency>
            </dependencies>
            <configuration>
              <username>${jdbc.admin.user}</username>
              <password>${jdbc.admin.password}</password>
              <url>${jdbc.url.nodb}</url>
              <driver>${jdbc.driver}</driver>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <docker.image>mcr.microsoft.com/mssql/server</docker.image>
        <mssql.port>1433</mssql.port>
        <db.username>jpo</db.username>
        <jdbc.admin.password>Passw0rd</jdbc.admin.password>
        <jdbc.port>11433</jdbc.port>
        <jdbc.admin.user>sa</jdbc.admin.user>
        <jdbc.url>${jdbc.url.nodb};databaseName=${db.instance}</jdbc.url>
        <db.instance>jpo</db.instance>
        <jdbc.url.nodb>jdbc:sqlserver://${db.host}:${jdbc.port}</jdbc.url.nodb>
        <jdbc.driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc.driver>
        <db.schema>jposchema</db.schema>
        <db.password>jpo</db.password>
      </properties>
    </profile>
    <profile>
      <id>integration-oracle</id>
      <build>
        <plugins>
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>start</id>
                <phase>none</phase>
                <goals>
                  <goal>start</goal>
                </goals>
              </execution>
              <execution>
                <id>stop</id>
                <phase>none</phase>
                <goals>
                  <goal>stop</goal>
                  <goal>remove</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <autoPull>always</autoPull>
              <removeVolumes>true</removeVolumes>
              <images>
                <image>
                  <alias>oracle-db</alias>
                  <name>${docker.image}:${tpm.oracledb}</name>
                  <run>
                    <env>
                      <ORACLE_SID>${oracle.sid}</ORACLE_SID>
                      <ORACLE_PDB>${db.instance}</ORACLE_PDB>
                      <ORACLE_PWD>${db.admin.password}</ORACLE_PWD>
                      <ORACLE_CHARACTERSET>AL32UTF8</ORACLE_CHARACTERSET>
                    </env>
                    <ports>
                      <port>${db.port}:${oracle.port}</port>
                      <port>15500:5500</port>
                    </ports>
                    <wait>
                      <log>DATABASE IS READY TO USE</log>
                      <time>1000000</time>
                      <kill>5000</kill>
                      <shutdown>2000</shutdown>
                    </wait>
                    <log>
                      <enabled>true</enabled>
                    </log>
                  </run>
                </image>
              </images>
              <verbose>true</verbose>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <version>${sql.maven.version}</version>
            <executions>
              <execution>
                <id>drop-database</id>
                <phase>validate</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <autocommit>true</autocommit>
                  <sqlCommand>DROP USER ${db.username} CASCADE;</sqlCommand>
                  <onError>continue</onError>
                </configuration>
              </execution>
              <execution>
                <id>create-db</id>
                <phase>initialize</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <autocommit>true</autocommit>
                  <sqlCommand>GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO ${db.username} IDENTIFIED BY ${db.password};
										ALTER SYSTEM SET open_cursors = ${oracle.max.open.cursors} SCOPE=BOTH;</sqlCommand>
                  <onError>abort</onError>
                </configuration>
              </execution>
              <execution>
                <id>create-db-reset-procedure</id>
                <phase>generate-sources</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <delimiter>/</delimiter>
                  <delimiterType>row</delimiterType>
                  <autocommit>true</autocommit>
                  <sqlCommand>CREATE OR REPLACE PROCEDURE ${db.username}.reset_user_tables
										IS
										  l_value NUMBER;
										BEGIN
										  -- Disable constraints
										  FOR c1 IN (SELECT y.table_name, y.constraint_name FROM user_constraints y, user_tables x WHERE x.table_name = y.table_name AND y.constraint_type = 'R') LOOP
											  BEGIN
												EXECUTE IMMEDIATE  ('ALTER TABLE '||c1.table_name||' DISABLE CONSTRAINT "'||c1.constraint_name||'"');
											  END;
										  END LOOP;

										  -- Truncate
										  FOR t1 IN (SELECT table_name FROM user_tables) LOOP
											  BEGIN
												  EXECUTE IMMEDIATE ('TRUNCATE TABLE '||t1.table_name);
											  END;
										  END LOOP;

										  -- Enable constraints
										  FOR c2 IN (SELECT table_name, constraint_name FROM user_constraints WHERE constraint_type = 'R') LOOP
											  BEGIN
												  EXECUTE IMMEDIATE ('ALTER TABLE '||c2.table_name||' ENABLE CONSTRAINT "'||c2.constraint_name||'"');
											  END;
										 END LOOP;

										  -- Reset sequences
										  FOR p_seq IN (SELECT sequence_name FROM user_sequences) LOOP
											BEGIN
											  EXECUTE IMMEDIATE 'select ' || p_seq.sequence_name || '.nextval from dual' INTO l_value;
											  EXECUTE IMMEDIATE 'alter sequence ' || p_seq.sequence_name || ' increment by -' || l_value || ' minvalue 0';
											  EXECUTE IMMEDIATE 'select ' || p_seq.sequence_name || '.nextval from dual' INTO l_value;
											  EXECUTE IMMEDIATE 'alter sequence ' || p_seq.sequence_name || ' increment by 1 minvalue 0';
											END;
										  END LOOP;
										END;
										/</sqlCommand>
                  <onError>abort</onError>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc8-atlassian-hosted</artifactId>
                <version>${oracle.jdbc.version}</version>
              </dependency>
            </dependencies>
            <configuration>
              <username>${db.admin.username}</username>
              <password>${db.admin.password}</password>
              <url>${jdbc.url}</url>
              <driver>${jdbc.driver}</driver>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <dependencies>
        <dependency>
          <groupId>com.oracle</groupId>
          <artifactId>ojdbc8-atlassian-hosted</artifactId>
          <version>${oracle.jdbc.version}</version>
        </dependency>
      </dependencies>
      <properties>
        <db.admin.username>system</db.admin.username>
        <db.admin.password>oracle</db.admin.password>
        <docker.image>docker.atl-paas.net/atlassian/jira/server/oracle-database</docker.image>
        <db.port>11521</db.port>
        <db.username>jpo</db.username>
        <jdbc.url>jdbc:oracle:thin:@${db.host}:${db.port}/${db.instance}?oracle.net.disableOob=true</jdbc.url>
        <db.instance>${oracle.pdb}</db.instance>
        <oracle.port>1521</oracle.port>
        <oracle.sid>ORCLCDB</oracle.sid>
        <jdbc.driver>oracle.jdbc.OracleDriver</jdbc.driver>
        <oracle.max.open.cursors>1000</oracle.max.open.cursors>
        <db.password>jpo</db.password>
        <oracle.pdb>JIRADB</oracle.pdb>
      </properties>
    </profile>
    <profile>
      <id>run-integration-tests</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <forkMode>${forkMode}</forkMode>
              <argLine>-Djdbc_url=${jdbc.url} -Djdbc_user=${db.username} -Djdbc_password=${db.password} -Djdbc_schema=${db.schema}</argLine>
              <includes>
                <include>**/com/radiantminds/plugins/jira/${testGroup}/**/*Test.java</include>
              </includes>
              <skipTests>false</skipTests>
              <classpathDependencyExcludes>
                <classpathDependencyExcludes>com.atlassian.annotations:atlassian-annotations</classpathDependencyExcludes>
              </classpathDependencyExcludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>run-client-integration-tests</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <id>start-testserver</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <tasks>
                    <taskdef />
                    <echo />
                    <exec>
                      <arg />
                      <arg />
                      <arg />
                      <arg />
                      <arg />
                      <arg />
                      <arg />
                    </exec>
                    <if>
                      <equals />
                      <then>
                        <exec>
                          <arg />
                        </exec>
                      </then>
                    </if>
                    <echo />
                  </tasks>
                </configuration>
              </execution>
              <execution>
                <id>shutdown-testserver</id>
                <phase>post-integration-test</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <tasks>
                    <taskdef />
                    <if>
                      <equals />
                      <then>
                        <echo />
                        <exec>
                          <arg />
                          <arg />
                        </exec>
                        <echo />
                        <exec>
                          <arg />
                          <arg />
                        </exec>
                      </then>
                    </if>
                  </tasks>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>ant-contrib</groupId>
                <artifactId>ant-contrib</artifactId>
                <version>20020829</version>
              </dependency>
            </dependencies>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>jasmine-integration-tests</id>
                <phase>integration-test</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>${basedir}/../${node.modules.bin}/${karma.executable}</executable>
                  <arguments>
                    <argument>start</argument>
                    <argument>karma-integration.conf.ci.js</argument>
                  </arguments>
                  <environmentVariables>
                    <PATH>${basedir}/${path.to.node.folder}${path.separator}${env.PATH}</PATH>
                  </environmentVariables>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  <dependencies>
    <dependency>
      <groupId>com.atlassian.rm</groupId>
      <artifactId>portfolio-lucene-bridge-dev-utils</artifactId>
      <version>9.4.20</version>
      <type>pom</type>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.atlassian.jira</groupId>
      <artifactId>jira-core</artifactId>
      <version>9.4.19-QR-20240405111325</version>
      <scope>provided</scope>
      <exclusions>
        <exclusion>
          <artifactId>servlet-api</artifactId>
          <groupId>javax.servlet</groupId>
        </exclusion>
        <exclusion>
          <artifactId>xercesImpl</artifactId>
          <groupId>xerces</groupId>
        </exclusion>
        <exclusion>
          <artifactId>spring-beans</artifactId>
          <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
          <artifactId>spring-tx</artifactId>
          <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jira-dmz-api</artifactId>
          <groupId>com.atlassian.jira</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jira-lucene-dmz</artifactId>
          <groupId>com.atlassian.jira</groupId>
        </exclusion>
        <exclusion>
          <artifactId>embedded-crowd-core</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>embedded-crowd-spi</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-api</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-server-api</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-core</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-integration-api</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-integration-client-rest</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-persistence</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-events</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-ldap</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-remote</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-server-common</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-password-encoders</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-db-config-password-cipher-encryptors</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-util-concurrent</artifactId>
          <groupId>com.atlassian.util.concurrent</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-http</artifactId>
          <groupId>com.atlassian.http</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-ip</artifactId>
          <groupId>com.atlassian.ip</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-threadlocal</artifactId>
          <groupId>com.atlassian.threadlocal</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-secure-utils</artifactId>
          <groupId>com.atlassian.security</groupId>
        </exclusion>
        <exclusion>
          <artifactId>spring-security-core</artifactId>
          <groupId>org.springframework.security</groupId>
        </exclusion>
        <exclusion>
          <artifactId>spring-ldap-core</artifactId>
          <groupId>org.springframework.ldap</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-integration-seraph</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>crowd-query-language</artifactId>
          <groupId>com.atlassian.crowd</groupId>
        </exclusion>
        <exclusion>
          <artifactId>wsdl4j</artifactId>
          <groupId>wsdl4j</groupId>
        </exclusion>
        <exclusion>
          <artifactId>soy-template-renderer-api</artifactId>
          <groupId>com.atlassian.soy</groupId>
        </exclusion>
        <exclusion>
          <artifactId>soy-template-renderer-plugin-api</artifactId>
          <groupId>com.atlassian.soy</groupId>
        </exclusion>
        <exclusion>
          <artifactId>sal-spi</artifactId>
          <groupId>com.atlassian.sal</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-gadgets-api</artifactId>
          <groupId>com.atlassian.gadgets</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-gadgets-spi</artifactId>
          <groupId>com.atlassian.gadgets</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-whitelist-api-plugin</artifactId>
          <groupId>com.atlassian.plugins</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-oauth-api</artifactId>
          <groupId>com.atlassian.oauth</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-p4package</artifactId>
          <groupId>com.atlassian.p4package</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-vcache-internal-legacy</artifactId>
          <groupId>com.atlassian.vcache</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-vcache-internal-api</artifactId>
          <groupId>com.atlassian.vcache</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-vcache-internal-memcached</artifactId>
          <groupId>com.atlassian.vcache</groupId>
        </exclusion>
        <exclusion>
          <artifactId>spymemcached</artifactId>
          <groupId>net.spy</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-cache-ehcache</artifactId>
          <groupId>com.atlassian.cache</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-cache-memory</artifactId>
          <groupId>com.atlassian.cache</groupId>
        </exclusion>
        <exclusion>
          <artifactId>beehive-core</artifactId>
          <groupId>com.atlassian.beehive</groupId>
        </exclusion>
        <exclusion>
          <artifactId>beehive-single-node</artifactId>
          <groupId>com.atlassian.beehive</groupId>
        </exclusion>
        <exclusion>
          <artifactId>beehive-db</artifactId>
          <groupId>com.atlassian.beehive</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-config</artifactId>
          <groupId>com.atlassian.config</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-localhost</artifactId>
          <groupId>com.atlassian</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jai_core</artifactId>
          <groupId>com.sun</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jai_codec</artifactId>
          <groupId>com.sun</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-collections4</artifactId>
          <groupId>org.apache.commons</groupId>
        </exclusion>
        <exclusion>
          <artifactId>micrometer-core</artifactId>
          <groupId>io.micrometer</groupId>
        </exclusion>
        <exclusion>
          <artifactId>micrometer-registry-jmx</artifactId>
          <groupId>io.micrometer</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jackson</artifactId>
          <groupId>com.atlassian.adapter</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-profiling-api</artifactId>
          <groupId>com.atlassian.profiling</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-profiling-micrometer</artifactId>
          <groupId>com.atlassian.profiling</groupId>
        </exclusion>
        <exclusion>
          <artifactId>micrometer-registry-atlassian-analytics</artifactId>
          <groupId>com.atlassian.profiling</groupId>
        </exclusion>
        <exclusion>
          <artifactId>slf4j-log4j12</artifactId>
          <groupId>org.slf4j</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jul-to-slf4j</artifactId>
          <groupId>org.slf4j</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jcl-over-slf4j</artifactId>
          <groupId>org.slf4j</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-logging</artifactId>
          <groupId>com.atlassian</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-jdk-utilities</artifactId>
          <groupId>com.atlassian.jdk.utilities</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-scheduler-core</artifactId>
          <groupId>com.atlassian.scheduler</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-scheduler-caesium</artifactId>
          <groupId>com.atlassian.scheduler.caesium</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-plugins-schema</artifactId>
          <groupId>com.atlassian.plugins</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-plugins-osgi</artifactId>
          <groupId>com.atlassian.plugins</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-plugins-osgi-events</artifactId>
          <groupId>com.atlassian.plugins</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-plugins-eventlistener</artifactId>
          <groupId>com.atlassian.plugins</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-seraph</artifactId>
          <groupId>com.atlassian.seraph</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-secure-random</artifactId>
          <groupId>com.atlassian.security</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-trusted-apps-core</artifactId>
          <groupId>com.atlassian.security.auth.trustedapps</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-trusted-apps-seraph-integration</artifactId>
          <groupId>com.atlassian.security.auth.trustedapps</groupId>
        </exclusion>
        <exclusion>
          <artifactId>upgrade-task-framework-core</artifactId>
          <groupId>com.atlassian.upgrade</groupId>
        </exclusion>
        <exclusion>
          <artifactId>bcprov-jdk15on</artifactId>
          <groupId>org.bouncycastle</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-renderer</artifactId>
          <groupId>com.atlassian.renderer</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-gzipfilter</artifactId>
          <groupId>com.atlassian.gzipfilter</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-gzipfilter-legacy</artifactId>
          <groupId>com.atlassian.gzipfilter</groupId>
        </exclusion>
        <exclusion>
          <artifactId>sitemesh</artifactId>
          <groupId>opensymphony</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-configuration</artifactId>
          <groupId>commons-configuration</groupId>
        </exclusion>
        <exclusion>
          <artifactId>lucene-analyzers-common</artifactId>
          <groupId>org.apache.lucene</groupId>
        </exclusion>
        <exclusion>
          <artifactId>lucene-queryparser</artifactId>
          <groupId>org.apache.lucene</groupId>
        </exclusion>
        <exclusion>
          <artifactId>httpclient</artifactId>
          <groupId>org.apache.httpcomponents</groupId>
        </exclusion>
        <exclusion>
          <artifactId>httpclient-cache</artifactId>
          <groupId>org.apache.httpcomponents</groupId>
        </exclusion>
        <exclusion>
          <artifactId>httpmime</artifactId>
          <groupId>org.apache.httpcomponents</groupId>
        </exclusion>
        <exclusion>
          <artifactId>velocity-tools</artifactId>
          <groupId>org.apache.velocity</groupId>
        </exclusion>
        <exclusion>
          <artifactId>password-cipher-base</artifactId>
          <groupId>com.atlassian.db.config</groupId>
        </exclusion>
        <exclusion>
          <artifactId>password-cipher-api</artifactId>
          <groupId>com.atlassian.db.config</groupId>
        </exclusion>
        <exclusion>
          <artifactId>glue</artifactId>
          <groupId>glue</groupId>
        </exclusion>
        <exclusion>
          <artifactId>csv</artifactId>
          <groupId>csv</groupId>
        </exclusion>
        <exclusion>
          <artifactId>picocontainer</artifactId>
          <groupId>org.picocontainer</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jzlib</artifactId>
          <groupId>jzlib</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jcaptcha</artifactId>
          <groupId>com.octo.captcha</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jcaptcha-api</artifactId>
          <groupId>com.octo.captcha</groupId>
        </exclusion>
        <exclusion>
          <artifactId>filters</artifactId>
          <groupId>com.jhlabs</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-dbcp2</artifactId>
          <groupId>org.apache.commons</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-pool2</artifactId>
          <groupId>org.apache.commons</groupId>
        </exclusion>
        <exclusion>
          <artifactId>h2</artifactId>
          <groupId>com.h2database</groupId>
        </exclusion>
        <exclusion>
          <artifactId>hsqldb</artifactId>
          <groupId>hsqldb</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jndi</artifactId>
          <groupId>jndi</groupId>
        </exclusion>
        <exclusion>
          <artifactId>ots-jts</artifactId>
          <groupId>ots-jts</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jotm</artifactId>
          <groupId>jotm</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jotm-jrmp_stubs</artifactId>
          <groupId>jotm</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jotm-iiop_stubs</artifactId>
          <groupId>jotm</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jonas_timer</artifactId>
          <groupId>jotm</groupId>
        </exclusion>
        <exclusion>
          <artifactId>objectweb-datasource</artifactId>
          <groupId>jotm</groupId>
        </exclusion>
        <exclusion>
          <artifactId>carol</artifactId>
          <groupId>carol</groupId>
        </exclusion>
        <exclusion>
          <artifactId>carol-properties</artifactId>
          <groupId>carol</groupId>
        </exclusion>
        <exclusion>
          <artifactId>xapool</artifactId>
          <groupId>xapool</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-jexl</artifactId>
          <groupId>commons-jexl</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-compress</artifactId>
          <groupId>org.apache.commons</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-discovery</artifactId>
          <groupId>commons-discovery</groupId>
        </exclusion>
        <exclusion>
          <artifactId>xalan</artifactId>
          <groupId>xalan</groupId>
        </exclusion>
        <exclusion>
          <artifactId>serializer</artifactId>
          <groupId>xalan</groupId>
        </exclusion>
        <exclusion>
          <artifactId>datafile</artifactId>
          <groupId>datafile</groupId>
        </exclusion>
        <exclusion>
          <artifactId>xpp3</artifactId>
          <groupId>xpp3</groupId>
        </exclusion>
        <exclusion>
          <artifactId>xstream</artifactId>
          <groupId>com.thoughtworks.xstream</groupId>
        </exclusion>
        <exclusion>
          <artifactId>radeox</artifactId>
          <groupId>radeox</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jtidy</artifactId>
          <groupId>jtidy</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jdom</artifactId>
          <groupId>jdom</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jdom2</artifactId>
          <groupId>org.jdom</groupId>
        </exclusion>
        <exclusion>
          <artifactId>rome</artifactId>
          <groupId>com.rometools</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jsoup</artifactId>
          <groupId>org.jsoup</groupId>
        </exclusion>
        <exclusion>
          <artifactId>wstx-asl</artifactId>
          <groupId>org.codehaus.woodstox</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jaxb-api</artifactId>
          <groupId>javax.xml.bind</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jaxb-core</artifactId>
          <groupId>com.sun.xml.bind</groupId>
        </exclusion>
        <exclusion>
          <artifactId>modz-detector</artifactId>
          <groupId>com.atlassian.modzdetector</groupId>
        </exclusion>
        <exclusion>
          <artifactId>antlr-runtime</artifactId>
          <groupId>org.antlr</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-jrcs</artifactId>
          <groupId>commons-jrcs</groupId>
        </exclusion>
        <exclusion>
          <artifactId>cglib-nodep</artifactId>
          <groupId>cglib</groupId>
        </exclusion>
        <exclusion>
          <artifactId>sal-api</artifactId>
          <groupId>com.atlassian.sal</groupId>
        </exclusion>
        <exclusion>
          <artifactId>sal-trust-api</artifactId>
          <groupId>com.atlassian.sal</groupId>
        </exclusion>
        <exclusion>
          <artifactId>applinks-spi</artifactId>
          <groupId>com.atlassian.applinks</groupId>
        </exclusion>
        <exclusion>
          <artifactId>applinks-host</artifactId>
          <groupId>com.atlassian.applinks</groupId>
        </exclusion>
        <exclusion>
          <artifactId>cluster-monitoring-spi</artifactId>
          <groupId>com.atlassian.cluster.monitoring</groupId>
        </exclusion>
        <exclusion>
          <artifactId>rhino</artifactId>
          <groupId>org.mozilla</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-validator</artifactId>
          <groupId>commons-validator</groupId>
        </exclusion>
        <exclusion>
          <artifactId>botocss-core</artifactId>
          <groupId>com.atlassian.botocss</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-json-api</artifactId>
          <groupId>com.atlassian.json</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-plugins-webresource-common</artifactId>
          <groupId>com.atlassian.plugins</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-application-host</artifactId>
          <groupId>com.atlassian.application</groupId>
        </exclusion>
        <exclusion>
          <artifactId>batik-transcoder</artifactId>
          <groupId>org.apache.xmlgraphics</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-audit-api</artifactId>
          <groupId>com.atlassian.audit</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-audit-core</artifactId>
          <groupId>com.atlassian.audit</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-audit-spi</artifactId>
          <groupId>com.atlassian.audit</groupId>
        </exclusion>
        <exclusion>
          <artifactId>batik-codec</artifactId>
          <groupId>org.apache.xmlgraphics</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-servlet-api</artifactId>
          <groupId>com.atlassian.web</groupId>
        </exclusion>
        <exclusion>
          <artifactId>fugue-guava</artifactId>
          <groupId>io.atlassian.fugue</groupId>
        </exclusion>
        <exclusion>
          <artifactId>fugue-retry</artifactId>
          <groupId>io.atlassian.fugue</groupId>
        </exclusion>
        <exclusion>
          <artifactId>tape</artifactId>
          <groupId>com.squareup</groupId>
        </exclusion>
        <exclusion>
          <artifactId>snappy-java</artifactId>
          <groupId>org.xerial.snappy</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-diagnostics-api</artifactId>
          <groupId>com.atlassian.diagnostics</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-diagnostics-core</artifactId>
          <groupId>com.atlassian.diagnostics</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-diagnostics-platform</artifactId>
          <groupId>com.atlassian.diagnostics</groupId>
        </exclusion>
        <exclusion>
          <artifactId>atlassian-healthcheck-spi</artifactId>
          <groupId>com.atlassian.healthcheck</groupId>
        </exclusion>
        <exclusion>
          <artifactId>kryo</artifactId>
          <groupId>com.esotericsoftware</groupId>
        </exclusion>
        <exclusion>
          <artifactId>oauth2-client-api</artifactId>
          <groupId>com.atlassian.oauth2</groupId>
        </exclusion>
        <exclusion>
          <artifactId>oauth2-provider-api</artifactId>
          <groupId>com.atlassian.oauth2</groupId>
        </exclusion>
        <exclusion>
          <artifactId>oauth2-scopes-api</artifactId>
          <groupId>com.atlassian.oauth2</groupId>
        </exclusion>
        <exclusion>
          <artifactId>filestore-filesystem</artifactId>
          <groupId>com.atlassian.datacenter.filestore</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <artifactId>hamcrest-core</artifactId>
          <groupId>org.hamcrest</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.3.19</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <properties>
    <db.host>localhost</db.host>
    <jtds.version>1.3.1</jtds.version>
    <db-mssql>false</db-mssql>
    <forkMode>once</forkMode>
    <apiTestServerPort>9898</apiTestServerPort>
    <testGroup>tests</testGroup>
    <db.instance>jpo</db.instance>
    <mysql-connector-java.version>8.0.20</mysql-connector-java.version>
    <sql.maven.version>1.5</sql.maven.version>
  </properties>
</project>

