<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2026 Contributors to the Eclipse Foundation. All rights reserved.
    Copyright (c) 2019, 2025 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.tests.bom</artifactId>
        <version>5.0.0-RC2</version>
        <relativePath>boms/tests/pom.xml</relativePath>
    </parent>

    <artifactId>org.eclipse.persistence.project</artifactId>
    <version>5.0.0-RC2</version>
    <packaging>pom</packaging>

    <name>EclipseLink Project</name>
    <description>Comprehensive and universal persistence framework for Java.</description>

    <properties>
        <!-- Minimum required JDK version -->
        <maven.compiler.release>17</maven.compiler.release>
        <maven.compiler.testRelease>17</maven.compiler.testRelease>

        <!-- TOOL Properties -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jdoc.doclint>all,-missing</jdoc.doclint>
        <!-- exclude big groups from the Xlint -->
        <comp.xlint>-Xlint:all,-serial</comp.xlint>
        <comp.xdoclint>-Xdoclint:all,-missing</comp.xdoclint>
        <comp.test.xlint>-Xlint:all,-rawtypes,-unchecked,-serial</comp.test.xlint>
        <warn.limit>250</warn.limit>

        <spotbugs.common>${project.build.directory}/spotbugs-exclude-common.xml</spotbugs.common>
        <spotbugs.exclude/>
        <spotbugs.skip>false</spotbugs.skip>
        <spotbugs.threshold>Normal</spotbugs.threshold>
        <dependency-check.failonerror>false</dependency-check.failonerror>

        <!-- PROJECT Properties -->
        <build.type>SNAPSHOT</build.type>
        <maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
        <build.qualifier>v${maven.build.timestamp}</build.qualifier>

        <bundle.version>${release.version}.${build.qualifier}</bundle.version>
        <project.build.testReports.settings>test-report-settings/surefire-report.properties</project.build.testReports.settings>
        <project.build.testReports.subdirectory>test-reports</project.build.testReports.subdirectory>
        <project.build.testReports.summaryFile>test-summary</project.build.testReports.summaryFile>
        <project.build.licenceResourceDirectory>${project.build.directory}/license</project.build.licenceResourceDirectory>
        <project.build.javadocResourceDirectory>${project.build.directory}/javadoc-resources</project.build.javadocResourceDirectory>

        <!--Integration test sources/resources directory. Relative directory to ${project.basedir}
        !!!Can't start with / character!!!-->
        <integration.test.directory>src/it/</integration.test.directory>
        <integration.test.sources.directory>${integration.test.directory}/java/</integration.test.sources.directory>
        <integration.test.resources.directory>${integration.test.directory}/resources/</integration.test.resources.directory>
        <integration.test.skip.verify>false</integration.test.skip.verify>

        <!--Default location for JEE servers binaries-->
        <test.directory>${user.home}/.eclipselinktests</test.directory>
        <installation.url>https://github.com/wildfly/wildfly/releases/download/27.0.0.Final/wildfly-27.0.0.Final.zip</installation.url>
        <installation.checksum.md5>56e2dd6f54e65603ada5659a06ad782b</installation.checksum.md5>

        <!--Test DB property file names-->
        <test.h2.properties.file>el-test.h2.properties</test.h2.properties.file>
        <test.mysql.properties.file>el-test.mysql.properties</test.mysql.properties.file>
        <test.mariadb.properties.file>el-test.mariadb.properties</test.mariadb.properties.file>
        <test.oracle.properties.file>el-test.oracle.properties</test.oracle.properties.file>
        <test.mongodb.properties.file>el-test.mongodb.properties</test.mongodb.properties.file>
        <test.derby.properties.file>el-test.derby.properties</test.derby.properties.file>
        <test.db2.properties.file>el-test.db2.properties</test.db2.properties.file>
        <test.mssql.properties.file>el-test.mssql.properties</test.mssql.properties.file>
        <test.pgsql.properties.file>el-test.pgsql.properties</test.pgsql.properties.file>

        <!--Default test DB is Derby-->
        <test.properties.file>${user.home}/${test.derby.properties.file}</test.properties.file>
        <test.properties.fileName>${test.derby.properties.file}</test.properties.fileName>
        <test.properties.default.directory>${project.build.directory}/test-default-properties</test.properties.default.directory>
        <test.report.properties.default.directory>${project.build.directory}/test-report-properties</test.report.properties.default.directory>
        <test.database>derby</test.database>
        <!--false: to start In-Memory database, true: not start (MySQL, Oracle)-->
        <test.skip.in-memory.db>false</test.skip.in-memory.db>

        <!--Test JEE server property file names-->
        <testjee.glassfish.properties.file>el-testjee.glassfish.properties</testjee.glassfish.properties.file>
        <testjee.weblogic.properties.file>el-testjee.weblogic.properties</testjee.weblogic.properties.file>
        <testjee.wildfly.properties.file>el-testjee.wildfly.properties</testjee.wildfly.properties.file>
        <!--Default test JEE Server is WildFly-->
        <testjee.properties.file>${user.home}/${testjee.wildfly.properties.file}</testjee.properties.file>
        <testjee.properties.fileName>${testjee.wildfly.properties.file}</testjee.properties.fileName>

        <!--Default DB driver used for testing-->
        <db.driver.groupId>org.apache.derby</db.driver.groupId>
        <db.driver.artifactId>derbyclient</db.driver.artifactId>
        <db.driver.version>${derby.version}</db.driver.version>

        <!--Default JEE client used for EJB remote call (testing)-->
        <jee.client.groupId>org.wildfly</jee.client.groupId>
        <jee.client.artifactId>wildfly-ejb-client-bom</jee.client.artifactId>
        <jee.client.version>${wildfly.version}</jee.client.version>
        <jee.client.type>pom</jee.client.type>

        <skip.glassfish.configuration>true</skip.glassfish.configuration>

        <!--These properties are used in MOXy and SDO tests only-->
        <test.xml.platform>org.eclipse.persistence.platform.xml.jaxp.JAXPPlatform</test.xml.platform>
        <test.xml.parser>org.eclipse.persistence.platform.xml.jaxp.JAXPParser</test.xml.parser>

        <!--Documentation properties-->
        <docs.status>DRAFT</docs.status>

        <!--Javadoc properties-->
        <javadoc.prefixTitle>EclipseLink ${release.version}</javadoc.prefixTitle>
        <javadoc.postfixTitle>API Reference</javadoc.postfixTitle>

        <checkstyle.version>13.3.0</checkstyle.version>
        <spotbugs.version>4.9.8</spotbugs.version>
        <findsecbugs.version>1.14.0</findsecbugs.version>

        <!--Documentation Dependencies version-->
        <asciidoctorj.version>3.0.1</asciidoctorj.version>
        <asciidoctorj.pdf.version>2.3.23</asciidoctorj.pdf.version>
        <asciidoctorj.epub.version>2.2.0</asciidoctorj.epub.version>
        <jruby.version>10.0.4.0</jruby.version>

        <!--Server tests-->
        <weblogic.version>12.2.1-3</weblogic.version>
        <wildfly.version>27.0.0.Final</wildfly.version>
    </properties>

    <!-- Default modules set and added to by all profiles -->
    <modules>
        <module>boms/parent</module>
        <module>boms/bom</module>
        <module>boms/dependencies</module>
        <module>boms/tests</module>

        <module>jpa/org.eclipse.persistence.jpa.jpql</module>

        <module>foundation/org.eclipse.persistence.core</module>
        <module>foundation/org.eclipse.persistence.core.test.framework</module>
        <module>foundation/org.eclipse.persistence.json</module>
        <module>foundation/org.eclipse.persistence.pgsql</module>

        <module>jpa/org.eclipse.persistence.jpa</module>
        <module>jpa/org.eclipse.persistence.jpa.test.framework</module>
        <module>jpa/org.eclipse.persistence.jpa.modelgen</module>
        <module>jpa/org.eclipse.persistence.jpars</module>
        <module>jpa/org.eclipse.persistence.jpars.server</module>

        <module>foundation/org.eclipse.persistence.corba</module>
        <module>foundation/org.eclipse.persistence.extension</module>
        <module>foundation/org.eclipse.persistence.nosql</module>

        <module>moxy/org.eclipse.persistence.moxy</module>
        <module>moxy/org.eclipse.persistence.moxy.utils.xjc</module>

        <module>dbws/org.eclipse.persistence.dbws</module>

        <module>sdo/org.eclipse.persistence.sdo</module>

        <!--Utility modules-->
        <module>utils/org.eclipse.persistence.dbws.builder</module>
        <module>utils/eclipselink.utils.rename</module>

        <!--Oracle Extensions-->
        <module>foundation/org.eclipse.persistence.oracle</module>
        <module>foundation/org.eclipse.persistence.oracle.nosql</module>

        <!--EclipseLink Bundles-->
        <module>bundles</module>
    </modules>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.coderplus.maven.plugins</groupId>
                    <artifactId>copy-rename-maven-plugin</artifactId>
                    <version>1.0.1</version>
                </plugin>
                <plugin>
                    <groupId>com.googlecode.maven-download-plugin</groupId>
                    <artifactId>download-maven-plugin</artifactId>
                    <version>1.13.0</version>
                </plugin>
                <plugin>
                    <groupId>com.sun.wts.tools.ant</groupId>
                    <artifactId>package-rename-task</artifactId>
                    <version>1.6.0</version>
                </plugin>
                <plugin>
                    <groupId>de.empulse.eclipselink</groupId>
                    <artifactId>staticweave-maven-plugin</artifactId>
                    <version>1.0.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>6.0.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.15.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.10.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>3.6.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>3.5.5</version>
                    <configuration>
                        <useModulePath>false</useModulePath>
                        <forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.5.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.12.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.5.0</version>
                    <configuration>
                        <nonFilteredFileExtensions>
                            <nonFilteredFileExtension>gar</nonFilteredFileExtension>
                            <nonFilteredFileExtension>war</nonFilteredFileExtension>
                        </nonFilteredFileExtensions>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>4.0.0-M16</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.4.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.5.5</version>
                    <configuration>
                        <useModulePath>false</useModulePath>
                        <forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>3.5.5</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.5.1</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.cargo</groupId>
                    <artifactId>cargo-maven3-plugin</artifactId>
                    <version>1.10.26</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.gmaven</groupId>
                    <artifactId>groovy-maven-plugin</artifactId>
                    <version>2.1.1</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>aspectj-maven-plugin</artifactId>
                    <version>1.16.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.aspectj</groupId>
                            <artifactId>aspectjrt</artifactId>
                            <version>${aspectj.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.aspectj</groupId>
                            <artifactId>aspectjweaver</artifactId>
                            <version>${aspectj.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.aspectj</groupId>
                            <artifactId>aspectjtools</artifactId>
                            <version>${aspectj.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.6.1</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>3.3.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>3.6.3</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>sql-maven-plugin</artifactId>
                    <version>3.0.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>${db.driver.groupId}</groupId>
                            <artifactId>${db.driver.artifactId}</artifactId>
                            <version>${db.driver.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>xml-maven-plugin</artifactId>
                    <version>1.2.1</version>
                </plugin>
                <!--This plugin (g:org.kuali.maven.plugins) is used instead typical org.codehaus.mojo:properties-maven-plugin:1.0.0
                    due bug: "Circular property definition" if expression like this is used in the Maven pom
                    "<server.testrunner.prefix>${modelname}/${modelname}_ejb/</server.testrunner.prefix>"
                    -->
                <plugin>
                    <groupId>org.kuali.maven.plugins</groupId>
                    <artifactId>properties-maven-plugin</artifactId>
                    <version>2.0.1</version>
                </plugin>
                <plugin>
                    <groupId>org.reficio</groupId>
                    <artifactId>p2-maven-plugin</artifactId>
                    <version>2.1.0</version>
                </plugin>
                <plugin>
                    <!-- see https://github.com/eclipse-ee4j/eclipselink-build-support -->
                    <groupId>org.eclipse.persistence</groupId>
                    <artifactId>eclipselink-testbuild-plugin</artifactId>
                    <version>1.1.2</version>
                </plugin>
                <plugin>
                    <groupId>org.carlspring.maven</groupId>
                    <artifactId>derby-maven-plugin</artifactId>
                    <version>1.10</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.derby</groupId>
                            <artifactId>derby</artifactId>
                            <version>${derby.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.derby</groupId>
                            <artifactId>derbyclient</artifactId>
                            <version>${derby.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.derby</groupId>
                            <artifactId>derbynet</artifactId>
                            <version>${derby.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>3.6.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>${checkstyle.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <checkstyleRules>
                            <module name="Checker">
                                <module name="FileTabCharacter">
                                    <property name="eachLine" value="true" />
                                </module>
                            </module>
                        </checkstyleRules>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs-maven-plugin</artifactId>
                    <version>4.9.8.2</version>
                    <dependencies>
                        <dependency>
                            <groupId>com.github.spotbugs</groupId>
                            <artifactId>spotbugs</artifactId>
                            <version>${spotbugs.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <skip>${spotbugs.skip}</skip>
                        <threshold>${spotbugs.threshold}</threshold>
                        <excludeFilterFile>${spotbugs.common},${spotbugs.exclude}</excludeFilterFile>
                        <plugins>
                            <plugin>
                                <groupId>com.h3xstream.findsecbugs</groupId>
                                <artifactId>findsecbugs-plugin</artifactId>
                                <version>${findsecbugs.version}</version>
                            </plugin>
                        </plugins>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.owasp</groupId>
                    <artifactId>dependency-check-maven</artifactId>
                    <version>12.2.0</version>
                    <configuration>
<!--                        <failBuildOnCVSS>7</failBuildOnCVSS>-->
                        <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
                        <failOnError>${dependency-check.failonerror}</failOnError>
                        <formats>
                            <format>HTML</format>
                            <format>CSV</format>
                        </formats>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.asciidoctor</groupId>
                    <artifactId>asciidoctor-maven-plugin</artifactId>
                    <version>3.2.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.jruby</groupId>
                            <artifactId>jruby-complete</artifactId>
                            <version>${jruby.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.asciidoctor</groupId>
                            <artifactId>asciidoctorj</artifactId>
                            <version>${asciidoctorj.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.asciidoctor</groupId>
                            <artifactId>asciidoctorj-pdf</artifactId>
                            <version>${asciidoctorj.pdf.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.asciidoctor</groupId>
                            <artifactId>asciidoctorj-epub3</artifactId>
                            <version>${asciidoctorj.epub.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.central</groupId>
                    <artifactId>central-publishing-maven-plugin</artifactId>
                    <version>0.10.0</version>
                </plugin>
                <plugin>
                    <groupId>org.wildfly.plugins</groupId>
                    <artifactId>wildfly-maven-plugin</artifactId>
                    <version>5.1.5.Final</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <!--Minimal JDK version-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <release>${maven.compiler.release}</release>
                    <testRelease>${maven.compiler.testRelease}</testRelease>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
                <executions>
                    <execution>
                        <id>default-compile</id>
                        <configuration>
                            <compilerArgs combine.children="append">
                                <arg>${comp.xlint}</arg>
                                <arg>${comp.xdoclint}</arg>
                                <arg>-Xmaxwarns</arg>
                                <arg>${warn.limit}</arg>
                                <arg>-Xmaxerrs</arg>
                                <arg>${warn.limit}</arg>
                            </compilerArgs>
                        </configuration>
                    </execution>
                    <execution>
                        <id>default-testCompile</id>
                        <configuration>
                            <compilerArgs combine.children="append">
                                <arg>${comp.test.xlint}</arg>
                                <arg>${comp.xdoclint}</arg>
                                <arg>-Xmaxwarns</arg>
                                <arg>${warn.limit}</arg>
                                <arg>-Xmaxerrs</arg>
                                <arg>${warn.limit}</arg>
                            </compilerArgs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>build-resources</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <inherited>false</inherited>
                        <configuration>
                            <descriptors>
                                <descriptor>src/main/assembly/common-license.xml</descriptor>
                                <descriptor>src/main/assembly/common-javadoc.xml</descriptor>
                                <descriptor>src/main/assembly/test-defaults.xml</descriptor>
                                <descriptor>src/main/assembly/test-report.xml</descriptor>
                                <descriptor>src/main/assembly/spotbugs-filter.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack-legal-resource</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.eclipse.persistence</groupId>
                                    <artifactId>org.eclipse.persistence.project</artifactId>
                                    <version>${project.version}</version>
                                    <classifier>common-license</classifier>
                                    <type>zip</type>
                                    <outputDirectory>${project.build.licenceResourceDirectory}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                    <execution>
                        <id>unpack-test-properties</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.eclipse.persistence</groupId>
                                    <artifactId>org.eclipse.persistence.project</artifactId>
                                    <version>${project.version}</version>
                                    <classifier>test-defaults</classifier>
                                    <type>zip</type>
                                    <outputDirectory>${test.properties.default.directory}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                    <execution>
                        <id>unpack-test-report-properties</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.eclipse.persistence</groupId>
                                    <artifactId>org.eclipse.persistence.project</artifactId>
                                    <version>${project.version}</version>
                                    <classifier>test-report</classifier>
                                    <type>zip</type>
                                    <outputDirectory>${test.report.properties.default.directory}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                    <execution>
                        <id>unpack-spotbugs-filter</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.eclipse.persistence</groupId>
                                    <artifactId>org.eclipse.persistence.project</artifactId>
                                    <version>${project.version}</version>
                                    <classifier>spotbugs-filter</classifier>
                                    <type>zip</type>
                                    <outputDirectory>${project.build.directory}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                    <execution>
                        <id>unpack-javadoc-resources</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.eclipse.persistence</groupId>
                                    <artifactId>org.eclipse.persistence.project</artifactId>
                                    <version>${project.version}</version>
                                    <classifier>javadoc-resources</classifier>
                                    <type>zip</type>
                                    <outputDirectory>${project.build.javadocResourceDirectory}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <id>parse-project-version</id>
                        <goals>
                            <goal>parse-version</goal>
                        </goals>
                    </execution>
                    <execution>
                        <phase>validate</phase>
                        <id>set-current-date</id>
                        <goals>
                            <goal>timestamp-property</goal>
                        </goals>
                        <configuration>
                            <locale>en_US</locale>
                            <name>release.date</name>
                            <pattern>MMMM dd, YYYY</pattern>
                        </configuration>
                    </execution>
                    <execution>
                        <id>release.version-property</id>
                        <goals>
                            <goal>regex-property</goal>
                        </goals>
                        <configuration>
                            <name>release.version</name>
                            <value>${project.version}</value>
                            <regex>-SNAPSHOT</regex>
                            <replacement></replacement>
                            <failIfNoMatch>false</failIfNoMatch>
                        </configuration>
                    </execution>
                    <execution>
                        <id>add-integration-test-sources</id>
                        <!--<phase>generate-resources</phase>-->
                        <goals>
                            <goal>add-test-source</goal>
                        </goals>
                        <configuration>
                            <skipAddTestSourceIfMissing>true</skipAddTestSourceIfMissing>
                            <sources>
                                <source>${integration.test.sources.directory}</source>
                            </sources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>add-integration-test-resources</id>
                        <!--<phase>generate-resources</phase>-->
                        <goals>
                            <goal>add-test-resource</goal>
                        </goals>
                        <configuration>
                            <skipAddTestResourceIfMissing>true</skipAddTestResourceIfMissing>
                            <resources>
                                <resource>
                                    <directory>${integration.test.resources.directory}</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>add-legal-resource</id>
                        <!--<phase>generate-resources</phase>-->
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>${project.build.licenceResourceDirectory}/md</directory>
                                    <includes>*</includes>
                                    <targetPath>META-INF</targetPath>
                                </resource>
                                <resource>
                                    <directory>${project.build.licenceResourceDirectory}/plugins</directory>
                                    <includes>*</includes>
                                    <targetPath>.</targetPath>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--Load maven test properties from file-->
            <plugin>
                <!--This plugin (g:org.kuali.maven.plugins) is used instead typical org.codehaus.mojo:properties-maven-plugin:1.0.0
                    due bug: "Circular property definition" if expression like this is used in the Maven pom
                    "<server.testrunner.prefix>${modelname}/${modelname}_ejb/</server.testrunner.prefix>"
                    -->
                <groupId>org.kuali.maven.plugins</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>read-db-jee-properties</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <locations>
                                <location>${test.properties.file}</location>
                                <location>${testjee.properties.file}</location>
                            </locations>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--Generate OSGi bundle/manifest-->
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <noWarningProjectTypes>
                        <noWarningProjectType>pom</noWarningProjectType>
                    </noWarningProjectTypes>
                    <niceManifest>true</niceManifest>
                    <instructions>
                        <_noextraheaders>true</_noextraheaders>
                        <_noimportjava>true</_noimportjava>
                        <HK2-Bundle-Name>${project.groupId}:${project.artifactId}</HK2-Bundle-Name>
                        <Bundle-Version>${bundle.version}</Bundle-Version>
                        <Extension-Name>${project.artifactId}</Extension-Name>
                        <Specification-Version>${release.version}</Specification-Version>
                        <Implementation-Version>${bundle.version}</Implementation-Version>
                    </instructions>
                </configuration>
                <executions>
                    <execution>
                        <id>bundle-manifest</id>
                        <goals>
                            <goal>manifest</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--Enforce certain Maven version-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce-maven</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>[17,)</version>
                                </requireJavaVersion>
                                <requireMavenVersion>
                                    <version>[3.8.5,)</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--Create jar file with classes and manifest with OSGi entries-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-jar</id>
                        <configuration>
                            <archive>
                                <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                            </archive>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--Create jar file with source files and manifest with OSGi entries-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
                                    <Bundle-Name>${project.name} Source</Bundle-Name>
                                    <Bundle-SymbolicName>${project.artifactId}.source</Bundle-SymbolicName>
                                    <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
                                    <Bundle-Version>${bundle.version}</Bundle-Version>
                                    <Eclipse-SourceBundle>${project.artifactId};version="${bundle.version}"</Eclipse-SourceBundle>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </execution>
                    <execution>
                        <id>attach-test-sources</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>test-jar-no-fork</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
                                    <Bundle-Name>${project.name} Test Source</Bundle-Name>
                                    <Bundle-SymbolicName>${project.artifactId}.test.source</Bundle-SymbolicName>
                                    <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
                                    <Bundle-Version>${bundle.version}</Bundle-Version>
                                    <Eclipse-SourceBundle>${project.artifactId};version="${bundle.version}"</Eclipse-SourceBundle>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>sql-maven-plugin</artifactId>
                <!-- common configuration shared by all executions -->
                <configuration>
                    <driver>${db.driver}</driver>
                    <url>${db.url}</url>
                    <username>${db.user}</username>
                    <password>${db.pwd}</password>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.carlspring.maven</groupId>
                <artifactId>derby-maven-plugin</artifactId>
                <configuration>
                    <derbyHome>${project.build.directory}/derby</derbyHome>
                    <username>${db.user}</username>
                    <password>${db.pwd}</password>
                    <driver>${db.driver}</driver>
                    <connectionURL>${db.url}</connectionURL>
                    <!--Log SQL statements.-->
                    <!--<debugStatements>true</debugStatements>-->
                    <skip>${test.skip.in-memory.db}</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <configuration>
                    <linkXRef>false</linkXRef>
                </configuration>
                <executions>
                    <execution>
                        <id>generate-surefire-html-report</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report-only</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/surefire-reports</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>generate-failsafe-html-report</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>failsafe-report-only</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/failsafe-reports</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>generate-test-summary-html-report</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>failsafe-report-only</goal>
                        </goals>
                        <configuration>
                            <reportsDirectories>
                                <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
                                <reportsDirectory>${project.build.directory}/failsafe-reports</reportsDirectory>
                            </reportsDirectories>
                            <outputDirectory>${project.build.directory}/${project.build.testReports.subdirectory}</outputDirectory>
                            <outputName>${project.build.testReports.summaryFile}</outputName>
                            <customBundle>${test.report.properties.default.directory}/surefire-report.properties</customBundle>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <additionalOptions combine.children="append">
                        <additionalOption>-Xmaxwarns</additionalOption>
                        <additionalOption>${warn.limit}</additionalOption>
                        <additionalOption>-Xmaxerrs</additionalOption>
                        <additionalOption>${warn.limit}</additionalOption>
                    </additionalOptions>
                    <minmemory>2G</minmemory>
                    <release>${maven.compiler.release}</release>
                    <doclint>${jdoc.doclint}</doclint>
                    <quiet>true</quiet>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <executions>
                    <execution>
                        <id>checkstyle</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!--For JDK<21 use Derby 10.16.1.1 as default 10.17.x support >JDK 21-->
        <profile>
            <id>derby-version</id>
            <activation>
                <jdk>[,21)</jdk>
            </activation>
            <properties>
                <derby.version>10.16.1.1</derby.version>
            </properties>
        </profile>
        <!--Testing database profiles-->
        <!--TODO simplify properties part db.driver.XXXX to load it from file-->
        <profile>
            <id>derby</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <test.properties.file>${user.home}/${test.derby.properties.file}</test.properties.file>
                <test.properties.fileName>${test.derby.properties.file}</test.properties.fileName>
                <test.database>derby</test.database>
                <!--Used by sql-maven-plugin-->
                <db.driver.groupId>org.apache.derby</db.driver.groupId>
                <db.driver.artifactId>derbyclient</db.driver.artifactId>
                <db.driver.version>${derby.version}</db.driver.version>
            </properties>
        </profile>
        <profile>
            <id>db2</id>
            <properties>
                <test.properties.file>${user.home}/${test.db2.properties.file}</test.properties.file>
                <test.properties.fileName>${test.db2.properties.file}</test.properties.fileName>
                <!--Used by sql-maven-plugin-->
                <db.driver.groupId>com.ibm.db2</db.driver.groupId>
                <db.driver.artifactId>jcc</db.driver.artifactId>
                <db.driver.version>${db2.version}</db.driver.version>
                <test.skip.in-memory.db>true</test.skip.in-memory.db>
            </properties>
        </profile>
        <profile>
            <id>db2-start</id>
            <build>
                <plugins>
                    <!-- Docker Maven Plugin 

                        Note, macOS may need to set DOCKER_HOST via e.g. 
                    
                        DOCKER_HOST=unix:///Users/$(whoami)/.docker/run/docker.sock
                    -->
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>3.2.0</version>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>gen-db2-init</id>
                                <phase>initialize</phase>
                                <configuration>
                                    <target>
                                        <mkdir dir="${project.build.directory}/db2-init" />

                                        <echo file="${project.build.directory}/db2-init/init.sql"><![CDATA[
                                        CONNECT TO ${db.name};
                                        CREATE USER TEMPORARY TABLESPACE USR_TMP_4K PAGESIZE 4K MANAGED BY AUTOMATIC STORAGE BUFFERPOOL IBMDEFAULTBP;
                                        CONNECT RESET;
                                        TERMINATE;
                                        ]]></echo>

                                        <echo file="${project.build.directory}/db2-init/init-db2.sh"><![CDATA[
                                        #!/usr/bin/env bash
                                        set -euo pipefail
                                        : "${DB2INSTANCE:?DB2INSTANCE not set}"
                                        : "${DBNAME:?DBNAME not set}"
                                        su - "$DB2INSTANCE" -c "db2 -tvsf /opt/db2-init/init.sql"
                                        ]]></echo>

                                        <chmod file="${project.build.directory}/db2-init/init-db2.sh" perm="755" />
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>0.48.1</version>
                        <inherited>false</inherited>
                        <configuration>
                            <!-- Declare the named volume "db2data" so we can create/remove it -->
                            <volumes>
                                <volume>
                                    <name>db2data</name>
                                    <driver>local</driver>
                                </volume>
                            </volumes>
                            
                            <images>
                                <image>
                                    <alias>db2</alias>
                                    <name>icr.io/db2_community/db2</name>
                                    <run>
                                        <!-- Give the container a fixed name (like name db2server) -->
                                        <containerNamePattern>db2server</containerNamePattern>

                                        <hostname>db2host</hostname>

                                        <ports>
                                            <port>50000:${db.port}</port>
                                        </ports>
                                        
                                        <platform>linux/amd64</platform>

                                        <env>
                                            <LICENSE>accept</LICENSE>
                                            <DB2INSTANCE>${db.user}</DB2INSTANCE>
                                            <DB2INST1_PASSWORD>${db.pwd}</DB2INST1_PASSWORD>
                                            <DBNAME>${db.name}</DBNAME>
                                        </env>

                                        <privileged>true</privileged>

                                        <volumes>
                                            <bind>
                                                <volume>db2data:/database</volume>
                                                <volume>${project.build.directory}/db2-init:/opt/db2-init:ro</volume>
                                            </bind>
                                        </volumes>

                                        <!-- 
                                            Wait for DB2 to be ready before proceeding
                                            
                                            Note: this can take quite some time. On a M1 Pro:
                                            DOCKER> [icr.io/db2_community/db2:latest] "db2": Waited on log out 'Setup has completed' 302450 ms 
                                        -->
                                        <wait>
                                            <log>Setup has completed</log>
                                            <time>300000</time> <!-- 5 minutes timeout -->
                                            
                                            <exec>
                                                <postStart>bash /opt/db2-init/init-db2.sh</postStart>
                                                <breakOnError>true</breakOnError>
                                            </exec>
                                        </wait>
                                        <!-- Container is started detached by the plugin (no TTY needed). -->
                                    </run>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <!-- Force stop and remove specific container by name -->
                            <execution>
                                <id>force-remove-db2server</id>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>stop</goal>
                                    <goal>remove</goal>
                                </goals>
                                <configuration>
                                    <verbose>true</verbose>
                                    <!-- Target specific container name -->
                                    <containerNamePattern>db2server</containerNamePattern>
                                    <!-- Force removal -->
                                    <removeVolumes>false</removeVolumes>
                                </configuration>
                            </execution>

                            <!-- Stop and remove any existing db2server container first -->
                            <execution>
                                <id>cleanup-old-container</id>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>stop</goal>
                                    <goal>remove</goal>
                                </goals>
                                <configuration>
                                    <verbose>true</verbose>
                                    <!-- Remove all containers for this image -->
                                    <allContainers>true</allContainers>
                                    <removeVolumes>true</removeVolumes>
                                </configuration>
                            </execution>

                            <!-- docker volume rm db2data (ignore error if it didn't exist) -->
                            <execution>
                                <id>cleanup-old-volume</id>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>volume-remove</goal>
                                </goals>
                                <configuration>
                                    <verbose>true</verbose>
                                </configuration>
                            </execution>

                            <!-- docker volume create db2data -->
                            <execution>
                                <id>create-db2-volume</id>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>volume-create</goal>
                                </goals>
                            </execution>

                            <!-- docker run ... -->
                            <execution>
                                <id>start-db2</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>start</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                
                </plugins>
            </build>
        </profile>
        <profile>
            <id>h2</id>
            <properties>
                <test.properties.file>${user.home}/${test.h2.properties.file}</test.properties.file>
                <test.properties.fileName>${test.h2.properties.file}</test.properties.fileName>
                <!--Used by sql-maven-plugin-->
                <db.driver.groupId>com.h2database</db.driver.groupId>
                <db.driver.artifactId>h2</db.driver.artifactId>
                <db.driver.version>${h2.version}</db.driver.version>
                <test.skip.in-memory.db>true</test.skip.in-memory.db>
            </properties>
        </profile>
        <profile>
            <id>mysql</id>
            <properties>
                <test.properties.file>${user.home}/${test.mysql.properties.file}</test.properties.file>
                <test.properties.fileName>${test.mysql.properties.file}</test.properties.fileName>
                <!--Used by sql-maven-plugin-->
                <db.driver.groupId>com.mysql</db.driver.groupId>
                <db.driver.artifactId>mysql-connector-j</db.driver.artifactId>
                <db.driver.version>${mysql.version}</db.driver.version>
                <test.skip.in-memory.db>true</test.skip.in-memory.db>
            </properties>
        </profile>
        <profile>
            <id>mysql-start</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>0.48.1</version>
                        <inherited>false</inherited>
                        <configuration>
                            <images>
                                <image>
                                    <alias>mysql</alias>
                                    <name>mysql:8.0.43</name>

                                    <run>
                                        <containerNamePattern>mysqlserver</containerNamePattern>

                                        <env>
                                            <MYSQL_ROOT_PASSWORD>${db.pwd}</MYSQL_ROOT_PASSWORD>
                                            <MYSQL_DATABASE>ecltests</MYSQL_DATABASE>
                                        </env>

                                        <ports>
                                            <port>3306:3306</port>
                                        </ports>

                                        <cmd>
                                            <exec>
                                                <arg>--log-bin-trust-function-creators=1</arg>
                                            </exec>
                                        </cmd>

                                        <!-- Wait until MySQL is really up -->
                                        <wait>
                                            <log><![CDATA[port: 3306  MySQL Community Server - GPL]]></log>
                                            <time>600000</time>
                                        </wait>
                                    </run>
                                </image>
                            </images>
                        </configuration>

                        <executions>
                            <execution>
                                <id>start-mysql</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>start</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>mariadb</id>
            <properties>
                <test.properties.file>${user.home}/${test.mariadb.properties.file}</test.properties.file>
                <test.properties.fileName>${test.mariadb.properties.file}</test.properties.fileName>
                <!--Used by sql-maven-plugin-->
                <db.driver.groupId>org.mariadb.jdbc</db.driver.groupId>
                <db.driver.artifactId>mariadb-java-client</db.driver.artifactId>
                <db.driver.version>${mariadb.version}</db.driver.version>
                <test.skip.in-memory.db>true</test.skip.in-memory.db>
            </properties>
        </profile>
        <profile>
            <id>mssql</id>
            <properties>
                <test.properties.file>${user.home}/${test.mssql.properties.file}</test.properties.file>
                <test.properties.fileName>${test.mssql.properties.file}</test.properties.fileName>
                <!--Used by sql-maven-plugin-->
                <db.driver.groupId>com.microsoft.sqlserver</db.driver.groupId>
                <db.driver.artifactId>mssql-jdbc</db.driver.artifactId>
                <db.driver.version>${mssql.version}</db.driver.version>
                <test.skip.in-memory.db>true</test.skip.in-memory.db>
            </properties>
        </profile>
        <profile>
            <id>pgsql</id>
            <properties>
                <test.properties.file>${user.home}/${test.pgsql.properties.file}</test.properties.file>
                <test.properties.fileName>${test.pgsql.properties.file}</test.properties.fileName>
                <!--Used by sql-maven-plugin-->
                <db.driver.groupId>org.postgresql</db.driver.groupId>
                <db.driver.artifactId>postgresql</db.driver.artifactId>
                <db.driver.version>${pgsql.version}</db.driver.version>
                <test.skip.in-memory.db>true</test.skip.in-memory.db>
            </properties>
        </profile>
        <profile>
            <id>oracle</id>
            <properties>
                <test.properties.file>${user.home}/${test.oracle.properties.file}</test.properties.file>
                <test.properties.fileName>${test.oracle.properties.file}</test.properties.fileName>
                <!--Used by sql-maven-plugin-->
                <db.driver.groupId>com.oracle.database.jdbc</db.driver.groupId>
                <db.driver.artifactId>ojdbc11</db.driver.artifactId>
                <db.driver.version>${oracle.jdbc.version}</db.driver.version>
                <test.skip.in-memory.db>true</test.skip.in-memory.db>
            </properties>
        </profile>
        <!--TODO simplify properties part jee.client.XXXX to load it from file-->
        <!--Testing JEE server profiles WildFly, GlassFish, Weblogic-->
        <profile>
            <id>wildfly</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <testjee.properties.file>${user.home}/${testjee.wildfly.properties.file}</testjee.properties.file>
                <testjee.properties.fileName>${testjee.wildfly.properties.file}</testjee.properties.fileName>
                <jee.client.groupId>org.wildfly</jee.client.groupId>
                <jee.client.artifactId>wildfly-ejb-client-bom</jee.client.artifactId>
                <jee.client.version>${wildfly.version}</jee.client.version>
                <jee.client.type>pom</jee.client.type>
                <!--Download properties-->
                <installation.url>https://github.com/wildfly/wildfly/releases/download/27.0.0.Final/wildfly-27.0.0.Final.zip</installation.url>
                <installation.checksum.md5>56e2dd6f54e65603ada5659a06ad782b</installation.checksum.md5>
            </properties>
        </profile>
        <profile>
            <id>glassfish</id>
            <properties>
                <testjee.properties.file>${user.home}/${testjee.glassfish.properties.file}</testjee.properties.file>
                <testjee.properties.fileName>${testjee.glassfish.properties.file}</testjee.properties.fileName>
                <jee.client.groupId>org.glassfish.main.appclient</jee.client.groupId>
                <jee.client.artifactId>gf-client</jee.client.artifactId>
                <jee.client.version>${glassfish.version}</jee.client.version>
                <jee.client.type>jar</jee.client.type>
                <skip.glassfish.configuration>false</skip.glassfish.configuration>
                <!--Download properties-->
                <installation.url>https://repo1.maven.org/maven2/org/glassfish/main/distributions/glassfish/5.1.0/glassfish-5.1.0.zip</installation.url>
                <installation.checksum.md5>2ed2d211fd56e270f3daf8e2b5e01e30</installation.checksum.md5>
            </properties>
        </profile>
        <profile>
            <id>weblogic</id>
            <properties>
                <testjee.properties.file>${user.home}/${testjee.weblogic.properties.file}</testjee.properties.file>
                <testjee.properties.fileName>${testjee.weblogic.properties.file}</testjee.properties.fileName>
                <jee.client.groupId>com.oracle.weblogic</jee.client.groupId>
                <jee.client.artifactId>wlthint3client</jee.client.artifactId>
                <jee.client.version>${weblogic.version}</jee.client.version>
                <jee.client.type>jar</jee.client.type>
            </properties>
        </profile>
        <!--Activate perfomance tests module-->
        <profile>
            <id>test-performance</id>
            <modules>
                <!--Performance Tests module module-->
                <module>performance/eclipselink.perf.test</module>
            </modules>
        </profile>
        <!--INTERNAL - Test properties fallback. Expects, that mvn command is executed from project root directory.-->
        <profile>
            <id>test-properties-fallback</id>
            <activation>
                <file>
                    <missing>${test.properties.file}</missing>
                </file>
            </activation>
            <properties>
                <test.properties.file>${test.properties.default.directory}/${test.properties.fileName}</test.properties.file>
            </properties>
        </profile>
        <profile>
            <id>test-jee-properties-fallback</id>
            <activation>
                <file>
                    <missing>${testjee.properties.file}</missing>
                </file>
            </activation>
            <properties>
                <testjee.properties.file>${test.properties.default.directory}/${testjee.properties.fileName}</testjee.properties.file>
            </properties>
        </profile>
        <!--INTERNAL - Don't start In-Memory DB in case of -DskipTests switch-->
        <profile>
            <id>test-skip-check</id>
            <activation>
                <property>
                    <name>skipTests</name>
                    <value>true</value>
                </property>
            </activation>
            <properties>
                <test.skip.in-memory.db>true</test.skip.in-memory.db>
            </properties>
        </profile>
        <profile>
            <id>coding-standards</id>
            <properties>
                <copyright.exclude>etc/copyright-exclude</copyright.exclude>
                <copyright.ignoreyear>false</copyright.ignoreyear>
                <copyright.scmonly>true</copyright.scmonly>
                <copyright.template>etc/copyright.txt</copyright.template>
                <copyright.update>false</copyright.update>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.glassfish.copyright</groupId>
                            <artifactId>glassfish-copyright-maven-plugin</artifactId>
                            <version>2.4</version>
                            <configuration>
                                <templateFile>${copyright.template}</templateFile>
                                <excludeFile>${copyright.exclude}</excludeFile>
                                <!-- skip files not under SCM-->
                                <scmOnly>${copyright.scmonly}</scmOnly>
                                <!-- for use with repair -->
                                <update>${copyright.update}</update>
                                <!-- check that year is correct -->
                                <ignoreYear>${copyright.ignoreyear}</ignoreYear>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.glassfish.copyright</groupId>
                        <artifactId>glassfish-copyright-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>cp-check</id>
                                <goals>
                                    <!-- Note: this takes ~2 hours -->
                                    <goal>copyright</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>spotbugs</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.github.spotbugs</groupId>
                        <artifactId>spotbugs-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>spotbugs</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>dependency-check</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.owasp</groupId>
                        <artifactId>dependency-check-maven</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>aggregate</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>coverage</id>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.jacoco</groupId>
                            <artifactId>jacoco-maven-plugin</artifactId>
                            <version>0.8.14</version>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <configuration>
                            <append>true</append>
                            <dumpOnExit>true</dumpOnExit>
                            <classDumpDir>${project.build.outputDirectory}</classDumpDir>
                        </configuration>
                        <executions>
                            <execution>
                                <id>jacoco-prepare-agent</id>
                                <phase>process-test-resources</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>jacoco-default-report</id>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>no-deploy</id>
            <activation>
                <property>
                    <name>!deploy</name>
                </property>
            </activation>
            <modules>
                <!--Helper parent pom for server side test modules-->
                <module>testing/server</module>
                <module>testing/server-oracle</module>
                <module>foundation/org.eclipse.persistence.oxm.test</module>
                <module>foundation/eclipselink.core.test</module>
                <module>sdo/eclipselink.sdo.test.server</module>

                <!--JPA test modules-->
                <!--JPA test module (JSE, JEE tests)-->
                <module>jpa/eclipselink.jpa.test</module>
                <!--JPA JSE test module-->
                <module>jpa/eclipselink.jpa.test.jse</module>
                <!--JPA Spring test module-->
                <module>jpa/eclipselink.jpa.spring.test</module>
                <!--JPA WDF test module-->
                <module>jpa/eclipselink.jpa.wdf.test</module>

                <!-- Oracle DB specific tests -->
                <module>foundation/org.eclipse.persistence.oracle.test</module>
                <!--DBWS Oracle Test module module-->
                <module>dbws/eclipselink.dbws.test.oracle</module>
                <!--DBWS Builder Oracle Test modules-->
                <module>utils/eclipselink.dbws.builder.test.oracle</module>
                <module>utils/eclipselink.dbws.builder.test.oracle.server</module>

                <module>utils/eclipselink.utils.sigcompare</module>

                <!-- testapps -->
                <module>jpa/eclipselink.jpa.testapps</module>
                <module>jpa/eclipselink.jpa.testapps.nosql</module>
                <module>jpa/eclipselink.jpa.testapps.oracle</module>
            </modules>
        </profile>
        <profile>
            <id>extra-tests</id>
            <modules>
                <!--JPA JAXRS test module-->
                <!--TODO FIXIT Doesn't work well. -->
                <module>jpa/eclipselink.jaxrs.test</module>
                <!--JPA JPA-RS test module-->
                <!--TODO FIXIT Doesn't work well. -->
                <module>jpa/eclipselink.jpars.test</module>
            </modules>
        </profile>
        <profile>
            <id>docs</id>
            <modules>
                <!--Parent documentation module-->
                <module>docs</module>
            </modules>
        </profile>
    </profiles>
</project>
