<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<!--
    Maven release plugin requires the project tag to be on a single line.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
      <groupId>org.apache</groupId>
      <artifactId>apache</artifactId>
      <version>34</version>
    </parent>

    <groupId>org.apache.openjpa</groupId>
    <artifactId>openjpa-parent</artifactId>
    <packaging>pom</packaging>
    <name>OpenJPA Parent POM</name>
    <description>Apache OpenJPA implementation of Jakarta JPA 3.1</description>

    <version>4.1.1</version>

    <properties>
        <java.class.version>11</java.class.version>
        <java.testclass.version>11</java.testclass.version>

        <doclint>none</doclint>

        <openjpa.version>${project.version}</openjpa.version>
        <openjpa.Log>DefaultLevel=INFO</openjpa.Log>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <checkstyle.suppressions.location>openjpa-project${file.separator}suppressions.xml</checkstyle.suppressions.location>

        <site.deploy.url>scp://people.apache.org/home/${site.deploy.user.name}/public_html/openjpa/${project.version}/staging-site</site.deploy.url>
        <!-- the test settings can be overridden my specific profiles -->
        <test.jvm.maxheapsize>1024m</test.jvm.maxheapsize>
        <test.jvm.arguments>-Xmx${test.jvm.maxheapsize} -XX:+HeapDumpOnOutOfMemoryError</test.jvm.arguments>
        <surefire.jvm.args>${test.jvm.arguments}</surefire.jvm.args>
        <!-- Setting for openjpa.DynamicEnhancementAgent usage -->
        <openjpa.DynamicEnhancementAgent>false</openjpa.DynamicEnhancementAgent>
        <!-- Commons DBCP settings passed in as openjpa.ConnectionProperties -->
        <dbcp.maxTotal>10</dbcp.maxTotal>
        <dbcp.maxIdle>5</dbcp.maxIdle>
        <dbcp.minIdle>2</dbcp.minIdle>
        <dbcp.maxWait>10000</dbcp.maxWait>
        <dbcp.args>MaxTotal=${dbcp.maxTotal},MaxIdle=${dbcp.maxIdle},MinIdle=${dbcp.minIdle},MaxWait=${dbcp.maxWait}</dbcp.args>
        <derby.locks.waitTimeout>10</derby.locks.waitTimeout>
        <derby.locks.deadlockTimeout>5</derby.locks.deadlockTimeout>
        <!-- Testcase @AllowFailure options:  ignore = silently skip test,
             log = execute test and log results but don't fail the test,
             anything else allows the test to execute normally
        -->
        <tests.openjpa.allowfailure>ignore</tests.openjpa.allowfailure>

        <!-- By default we use DBCP2 via AutoDriverDataSource -->
        <tests.openjpa.driverDataSource>dbcp</tests.openjpa.driverDataSource>

        <!--turn on sources.jar generation by setting to verify and true -->
        <createSource>none</createSource>
        <createSources>false</createSources>
        <!-- common JDBC driver versions -->
        <derby.version>10.15.2.0</derby.version>
        <hsqldb.version>2.7.4</hsqldb.version>
        <mysql.connector.version>5.1.49</mysql.connector.version>
        <mariadb.connector.version>2.7.2</mariadb.connector.version>
        <postgresql.connector.version>42.7.5</postgresql.connector.version>
        <mssql.connector.version>12.8.1.jre11</mssql.connector.version>

        <!-- other common versions -->
        <kubernetes-client.version>6.13.3</kubernetes-client.version>
        <slf4j.version>2.0.17</slf4j.version>

        <maven.javadoc.version>3.10.0</maven.javadoc.version>
        <javadoc.additionalparam />
        <version.maven.surefire>3.5.2</version.maven.surefire>

        <xbean.version>4.26</xbean.version>
        <bval.version>3.0.2</bval.version>
        <log4j2.version>2.23.1</log4j2.version>
        <ant.version>1.10.15</ant.version>

        <jmock.version>2.13.1</jmock.version>
        <dbcp2.version>2.13.0</dbcp2.version>
        <pool2.version>2.12.1</pool2.version>

        <jakarta.annotation-api.version>2.1.1</jakarta.annotation-api.version>
        <jakarta.persistence-api.version>3.1.0</jakarta.persistence-api.version>
        <jakarta.transaction-api.version>2.0.1</jakarta.transaction-api.version>
        <jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
        <jakarta.jms-api.version>3.1.0</jakarta.jms-api.version>

    </properties>

    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org</url>
    </organization>

    <url>http://openjpa.apache.org</url>

    <issueManagement>
        <system>jira</system>
        <url>https://issues.apache.org/jira/browse/OPENJPA</url>
    </issueManagement>

    <ciManagement>
        <system>Jenkins</system>
        <url>https://builds.apache.org/job/OpenJPA-trunk-deploy/</url>
    </ciManagement>

    <inceptionYear>2006</inceptionYear>

    <mailingLists>
        <mailingList>
            <name>OpenJPA Developer List</name>
            <subscribe>dev-subscribe@openjpa.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@openjpa.apache.org</unsubscribe>
            <post>dev@openjpa.apache.org</post>
            <archive>https://lists.apache.org/list.html?dev@openjpa.apache.org</archive>
        </mailingList>
        <mailingList>
            <name>OpenJPA Users List</name>
            <subscribe>users-subscribe@openjpa.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@openjpa.apache.org</unsubscribe>
            <post>users@openjpa.apache.org</post>
            <archive>https://lists.apache.org/list.html?users@openjpa.apache.org</archive>
        </mailingList>
        <mailingList>
            <name>OpenJPA Commits List</name>
            <subscribe>commits-subscribe@openjpa.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@openjpa.apache.org</unsubscribe>
            <post>commits@openjpa.apache.org</post>
            <archive>https://lists.apache.org/list.html?commits@openjpa.apache.org</archive>
        </mailingList>
    </mailingLists>

    <distributionManagement>
        <site>
            <id>people.apache.org</id>
            <url>${site.deploy.url}</url>
        </site>
    </distributionManagement>

    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/openjpa.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/openjpa.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf/openjpa.git</url>
      <tag>4.1.1</tag>
  </scm>

    <modules>
        <module>openjpa-lib</module>
        <module>openjpa-kernel</module>
        <module>openjpa-jdbc</module>
        <module>openjpa-persistence</module>
        <module>openjpa-persistence-jdbc</module>
        <module>openjpa-persistence-locking</module>
        <module>openjpa-xmlstore</module>
        <module>openjpa-slice</module>
        <module>openjpa-jest</module>
        <module>openjpa-kubernetes</module>
        <module>openjpa</module>
        <module>openjpa-project</module>
        <module>openjpa-examples</module>
        <module>openjpa-integration</module>
        <module>openjpa-all</module>
        <module>openjpa-tools</module>
        <module>openjpa-features</module>
        <module>openjpa-junit5</module>
    </modules>

    <profiles>
        <!-- ================ -->
        <!--  Build Profiles  -->
        <!-- ================ -->

        <!-- Override some release settings inherited from apache-7.pom -->
        <profile>
            <id>apache-release</id>
            <activation>
                <property>
                    <name>performRelease</name>
                </property>
            </activation>
            <properties>
                <!--turn on sources.jar generation -->
                <createSource>verify</createSource>
                <createSources>true</createSources>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <excludeSubProjects>false</excludeSubProjects>
                            <numUnapprovedLicenses>0</numUnapprovedLicenses>
                            <excludes>
                                <!-- comments are usupported in services files -->
                                <exclude>**/jakarta.persistencespi.PersistenceProvider</exclude>
                                <exclude>**/javax.annotation.processing.Processor</exclude>
                                <!-- comments are usupported by our rsrc parser -->
                                <exclude>**/*.rsrc</exclude>
                                <!-- comments are usupported in these files -->
                                <exclude>**/org.apache.openjpa.revision.properties</exclude>
                                <exclude>scripts/*.list</exclude>
                                <exclude>scripts/*.options</exclude>
                                <exclude>scripts/*.dict</exclude>
                                <!-- generated content -->
                                <exclude>**/.*/**</exclude>
                                <exclude>**/target/**/*</exclude>
                                <exclude>**/dependency-reduced-pom.xml</exclude>
                                <exclude>**/*.log</exclude>
                                <exclude>**/maven-eclipse.xml</exclude>
                                <exclude>**/rat.txt</exclude>
                                <exclude>release.properties</exclude>
                                <exclude>DEPENDENCIES</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>sign-release</id>
            <activation>
                <property>
                    <name>sign-release</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!--
            Generate the documentation using the YDoc UML generation plugin.
            Assumes you have the YDoc libraries locally, as well as a valid
            YDoc license file. Example usage for building the docs:

            mvn process-classes -Pydoc-profile,javadoc-profile -Dydoc.home=${HOME}/.m2/privaterepos/ydoc/ydoc-2.2_04-jdk1.5 -Dydoc.license=${HOME}/.m2/privaterepos/ydoc/ydoc.license
        -->
        <profile>
            <id>ydoc-profile</id>
            <properties>
                <javadoc.additionalparam>
                    -generic
                    -umlautogen
                    -tag param
                    -tag return
                    -tag see
                    -ytag y.uml
                    -license ${ydoc.license}
                    -filter ydoc.filters.ExcludeFilter
                    -filterpath ${ydoc.home}/lib/ydoc.jar
                    -doclet ydoc.doclets.YStandard
                    -docletpath ${ydoc.home}/lib/ydoc.jar${path.separator}${ydoc.home}/lib/class2svg.jar${path.separator}${ydoc.home}/resources
                    ${ydoc.params}
                </javadoc.additionalparam>
            </properties>
        </profile>

        <profile>
            <!--
                Javadoc profile. Docs can be built by running:
                    mvn process-classes -Dtest=false -Pjavadoc-profile
            -->
            <id>javadoc-profile</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <release>${java.class.version}</release>
                            <doclint>none</doclint>
                            <additionalJOption>
                                ${javadoc.additionalparam}
                            </additionalJOption>
                            <subpackages>org.apache.openjpa</subpackages>
                            <verbose>false</verbose>
                            <maxmemory>1024m</maxmemory>
                            <links>
                                <link>https://docs.oracle.com/en/java/javase/11/docs/api/</link>
                            </links>
                        </configuration>
                        <executions>
                            <execution>
                                <id>attach-javadoc</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>aggregate-jar</goal>
                                </goals>
                            </execution>
                            <execution>
                                <phase>process-classes</phase>
                                <goals>
                                    <goal>aggregate</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <activation>
                <property>
                    <name>builddocs</name>
                    <value>true</value>
                </property>
            </activation>
        </profile>

        <!-- =============== -->
        <!--  Test Profiles  -->
        <!-- =============== -->
        <profile>
            <id>debug</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <test.jvm.arguments>-Xmx${test.jvm.maxheapsize} -agentlib:jdwp=transport=dt_socket,server=y,address=8000</test.jvm.arguments>
            </properties>
        </profile>

        <profile>
            <id>enable-security</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <test.env>-Dtest.basedir=${basedir}/..</test.env>
                <policy.file>${basedir}/../openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy</policy.file>
                <surefire.jvm.args>-Djava.security.manager -Djava.security.policy=${policy.file} ${test.env} ${test.jvm.arguments}</surefire.jvm.args>
            </properties>
        </profile>

        <profile>
            <id>test-dynamic-enhancer</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <test.env>-Dtest.basedir=${basedir}/..</test.env>
                <policy.file>${basedir}/../openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy</policy.file>
                <surefire.jvm.args>-Djava.security.manager -Djava.security.policy=${policy.file} ${test.env} ${test.jvm.arguments}</surefire.jvm.args>
            </properties>
            <build>
                <plugins>
                   <plugin>
                       <groupId>org.apache.maven.plugins</groupId>
                       <artifactId>maven-surefire-plugin</artifactId>
                       <configuration>
                           <argLine>${surefire.jvm.args}</argLine>
                           <includes>
                               <include />
                           </includes>
                       </configuration>
                   </plugin>
                </plugins>
            </build>
        </profile>

        <!-- =================== -->
        <!--  Database Profiles  -->
        <!-- =================== -->

        <!-- Default profile for testing with an embedded Apache Derby DB -->
        <profile>
            <!--
                Optionally, you can override the following properties:
                    -Dderby.version=10.2.2.0
            -->
            <id>test-derby</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            <property>
                <name>test-derby</name>
            </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.apache.derby</groupId>
                    <artifactId>derby</artifactId>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.derby</groupId>
                    <artifactId>derbytools</artifactId>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>org.apache.derby.jdbc.EmbeddedDriver</connection.driver.name>
                <connection.url>jdbc:derby:target/database/openjpa-derby-database;create=true</connection.url>
                <connection.username />
                <connection.password />
                <!-- Tests are much faster without shutting derby down at the end of each test. -->
                <jdbc.DBDictionary>ShutdownOnClose=false</jdbc.DBDictionary>
                <!-- TCK specific properties -->
                <tck.db.name>derby</tck.db.name>
            </properties>
        </profile>

        <!-- profile for testing with an embedded h2 DB -->
        <profile>
            <id>test-h2</id>
            <activation>
                <property>
                    <name>test-h2</name>
                </property>
            </activation>
            <properties>
                <h2.version>1.4.200</h2.version>
                <connection.driver.name>org.h2.Driver</connection.driver.name>
                <connection.url>jdbc:h2:./target/database/openjpa-h2-database</connection.url>
                <connection.username />
                <connection.password />
                <!-- TCK specific properties -->
                <tck.db.name>h2mem</tck.db.name>
            </properties>

            <dependencies>
                <dependency>
                    <groupId>com.h2database</groupId>
                    <artifactId>h2</artifactId>
                    <version>${h2.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <!-- profile for testing with an embedded h2 2.x DB -->
        <profile>
            <id>test-h2-2</id>
            <activation>
                <property>
                    <name>test-h2-2</name>
                </property>
            </activation>
            <properties>
                <h2.version>2.1.214</h2.version>
                <connection.driver.name>org.h2.Driver</connection.driver.name>
                <connection.url>jdbc:h2:./target/database/openjpa-h2-database;MODE=STRICT</connection.url>
                <connection.username />
                <connection.password />
                <!-- TCK specific properties -->
                <tck.db.name>h2mem</tck.db.name>
            </properties>

            <dependencies>
                <dependency>
                    <groupId>com.h2database</groupId>
                    <artifactId>h2</artifactId>
                    <version>${h2.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <!-- Profile for testing with an In-Memory Apache Derby DB -->
        <profile>
            <!--
                Optionally, you can override the following properties:
                    -Dderby.version=10.5.3.0_1
            -->
            <id>test-derbymem</id>
            <activation>
                <property>
                    <name>test-derbymem</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.apache.derby</groupId>
                    <artifactId>derby</artifactId>
                    <version>${derby.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.derby</groupId>
                    <artifactId>derbytools</artifactId>
                    <version>${derby.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>org.apache.derby.jdbc.EmbeddedDriver</connection.driver.name>
                <connection.url>jdbc:derby:memory:openjpa-derby-inmem-database;create=true</connection.url>
                <connection.username />
                <connection.password />
                <!-- Tests are much faster without shutting derby down at the end of each test. -->
                <jdbc.DBDictionary>ShutdownOnClose=false</jdbc.DBDictionary>
            </properties>
        </profile>

        <!-- Profile for testing with Apache Derby DB network server -->
        <profile>
            <!--
                Example Derby Network Server profile.
                You must manually start a Derby network server instance and
                also set the following properties:
                    -Dopenjpa.derbynet.url=jdbc:derby://<HOST>:<PORT>/<DBNAME>;\
                        create=true

                Optionally, you can override the following properties:
                    -Dopenjpa.derbynet.driver=org.apache.derby.jdbc.ClientXADataSource
                    -Dopenjpa.derbynet.username=
                    -Dopenjpa.derbynet.password=
                    -Dderby.version=10.2.2.0
            -->
            <id>test-derbynet</id>
            <activation>
                <property>
                    <name>test-derbynet</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.apache.derby</groupId>
                    <artifactId>derbyclient</artifactId>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <openjpa.derbynet.url>jdbc:derby://localhost:1527/openjpa20;create=true;traceDirectory=target;traceFile=derby.log</openjpa.derbynet.url>
                <openjpa.derbynet.driver>org.apache.derby.jdbc.ClientDriver</openjpa.derbynet.driver>
                <!-- Note: commons-dbcp2 requires dummy values for uid/pwd -->
                <openjpa.derbynet.username>uid</openjpa.derbynet.username>
                <openjpa.derbynet.password>pwd</openjpa.derbynet.password>
                <connection.driver.name>${openjpa.derbynet.driver}</connection.driver.name>
                <connection.url>${openjpa.derbynet.url}</connection.url>
                <connection.username>${openjpa.derbynet.username}</connection.username>
                <connection.password>${openjpa.derbynet.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
        </profile>

        <!-- Profile for testing with HSQL DB -->
        <profile>
            <id>test-hsqldb</id>
            <activation>
                <property>
                    <name>test-hsqldb</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.hsqldb</groupId>
                    <artifactId>hsqldb</artifactId>
                    <version>${hsqldb.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>org.hsqldb.jdbcDriver</connection.driver.name>
                <!--<connection.url>jdbc:hsqldb:target/database/openjpa-hsqldb-database;create=true</connection.url>-->
                <connection.url>jdbc:hsqldb:mem:openjpa22-hsqldb-database</connection.url>
                <connection.username>sa</connection.username>
                <connection.password />
                <jdbc.DBDictionary />
            </properties>
        </profile>

        <!-- Profile for testing with MySQL DB -->
        <profile>
            <id>test-mysql</id>
            <activation>
                <property>
                    <name>test-mysql</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.connector.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>com.mysql.jdbc.Driver</connection.driver.name>
                <!--<connection.url>jdbc:mysql://localhost/OPENJPA</connection.url>-->
                <connection.url>${openjpa.mysql.url}</connection.url>
                <connection.username>${openjpa.mysql.username}</connection.username>
                <connection.password>${openjpa.mysql.password}</connection.password>
                <jdbc.DBDictionary />
                <!-- DBCP overrides for MySQL testing -->
                <dbcp.maxIdle>5</dbcp.maxIdle>
                <dbcp.minIdle>0</dbcp.minIdle>
            </properties>
        </profile>

        <!-- Profile for testing with MySQL DB -->
        <profile>
            <id>test-mysql-docker</id>
            <activation>
                <property>
                    <name>test-mysql-docker</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.connector.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>com.mysql.jdbc.Driver</connection.driver.name>

                <!-- default settings for local docker -->
                <docker.external.mysql.port>3306</docker.external.mysql.port>
                <openjpa.mysql.dbname>openjpatst</openjpa.mysql.dbname>
                <openjpa.mysql.url>jdbc:mysql://localhost:${docker.external.mysql.port}/${openjpa.mysql.dbname}?useSSL=false</openjpa.mysql.url>
                <openjpa.mysql.username>openjpatst</openjpa.mysql.username>
                <openjpa.mysql.password>openjpatst</openjpa.mysql.password>

                <!--<connection.url>jdbc:mysql://localhost/OPENJPA</connection.url>-->
                <connection.url>${openjpa.mysql.url}</connection.url>
                <connection.username>${openjpa.mysql.username}</connection.username>
                <connection.password>${openjpa.mysql.password}</connection.password>
                <jdbc.DBDictionary />

                <!-- DBCP overrides for MySQL testing -->
                <dbcp.maxIdle>5</dbcp.maxIdle>
                <dbcp.minIdle>0</dbcp.minIdle>

                <mysql.server.version>5.7</mysql.server.version>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>mysql/mysql-server:${mysql.server.version}</name>
                                    <run>
                                        <env>
                                            <MYSQL_DATABASE>${openjpa.mysql.dbname}</MYSQL_DATABASE>
                                            <MYSQL_USER>${connection.username}</MYSQL_USER>
                                            <MYSQL_PASSWORD>${connection.password}</MYSQL_PASSWORD>
                                        </env>
                                        <ports>
                                            <port>${docker.external.mysql.port}:3306</port>
                                        </ports>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- Profile for testing with MariaDB DB -->
        <profile>
            <id>test-mariadb</id>
            <activation>
                <property>
                    <name>test-mariadb</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.mariadb.jdbc</groupId>
                    <artifactId>mariadb-java-client</artifactId>
                    <version>${mariadb.connector.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>org.mariadb.jdbc.Driver</connection.driver.name>
                <!--<connection.url>jdbc:mysql://localhost/OPENJPA</connection.url>-->
                <connection.url>${openjpa.mariadb.url}</connection.url>
                <connection.username>${openjpa.mariadb.username}</connection.username>
                <connection.password>${openjpa.mariadb.password}</connection.password>
                <jdbc.DBDictionary />
                <!-- DBCP overrides for MariaDB testing -->
                <dbcp.maxIdle>5</dbcp.maxIdle>
                <dbcp.minIdle>0</dbcp.minIdle>
            </properties>
        </profile>

        <!-- Profile for testing with MariaDB DB on Docker-->
        <profile>
            <id>test-mariadb-docker</id>
            <activation>
                <property>
                    <name>test-mariadb-docker</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.mariadb.jdbc</groupId>
                    <artifactId>mariadb-java-client</artifactId>
                    <version>${mariadb.connector.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>org.mariadb.jdbc.Driver</connection.driver.name>

                <!-- default settings for local docker -->
                <docker.external.mariadb.port>3306</docker.external.mariadb.port>
                <openjpa.mariadb.dbname>openjpatst</openjpa.mariadb.dbname>
                <openjpa.mariadb.url>jdbc:mariadb://localhost:${docker.external.mariadb.port}/${openjpa.mariadb.dbname}</openjpa.mariadb.url>
                <openjpa.mariadb.username>root</openjpa.mariadb.username>
                <openjpa.mariadb.password>openjpatst</openjpa.mariadb.password>

                <!--<connection.url>jdbc:mariadb://localhost/OPENJPA</connection.url>-->
                <connection.url>${openjpa.mariadb.url}</connection.url>
                <connection.username>${openjpa.mariadb.username}</connection.username>
                <connection.password>${openjpa.mariadb.password}</connection.password>
                <jdbc.DBDictionary />

                <!-- DBCP overrides for mariadb testing -->
                <dbcp.maxIdle>5</dbcp.maxIdle>
                <dbcp.minIdle>0</dbcp.minIdle>

                <mariadb.server.version>10.5</mariadb.server.version>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>mariadb/server:${mariadb.server.version}</name>
                                    <run>
                                        <env>
                                            <!-- mariadb still uses the old mysql env variables -->
                                            <MYSQL_DATABASE>${openjpa.mariadb.dbname}</MYSQL_DATABASE>
                                            <MYSQL_ROOT_PASSWORD>${connection.password}</MYSQL_ROOT_PASSWORD>

                                            <!-- seems to get ignored -->
                                            <MYSQL_USER>${connection.username}</MYSQL_USER>
                                        </env>
                                        <ports>
                                            <port>${docker.external.mariadb.port}:3306</port>
                                        </ports>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                    </plugin>
                </plugins>
            </build>

        </profile>

        <!-- Profile for testing with PostgreSQL DB -->
        <profile>
            <id>test-postgresql</id>
            <activation>
                <property>
                    <name>test-postgresql</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.postgresql</groupId>
                    <artifactId>postgresql</artifactId>
                    <version>${postgresql.connector.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>org.postgresql.Driver</connection.driver.name>
                <!--<connection.url>jdbc:postgresql://localhost/openjpa</connection.url>-->
                <connection.url>${openjpa.postgresql.url}</connection.url>
                <connection.username>${openjpa.postgresql.username}</connection.username>
                <connection.password>${openjpa.postgresql.password}</connection.password>
                <jdbc.DBDictionary />
                <!-- DBCP overrides -->
                <dbcp.maxIdle>5</dbcp.maxIdle>
                <dbcp.minIdle>0</dbcp.minIdle>
                <dbcp.maxTotal>20</dbcp.maxTotal>
            </properties>
        </profile>

        <!-- Profile for testing with PostgreSQL DB via Docker -->
        <profile>
            <id>test-postgresql-docker</id>
            <activation>
                <property>
                    <name>test-postgresql-docker</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.postgresql</groupId>
                    <artifactId>postgresql</artifactId>
                    <version>${postgresql.connector.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>org.postgresql.Driver</connection.driver.name>

                <!-- default settings for local docker -->
                <docker.external.postgresql.port>5432</docker.external.postgresql.port>
                <openjpa.postgresql.dbname>openjpatst</openjpa.postgresql.dbname>
                <openjpa.postgresql.username>postgres</openjpa.postgresql.username>
                <openjpa.postgresql.password>postgres</openjpa.postgresql.password>
                <openjpa.postgresql.url>jdbc:postgresql://localhost:${docker.external.postgresql.port}/${openjpa.postgresql.dbname}</openjpa.postgresql.url>

                <!--<connection.url>jdbc:postgresql://localhost/openjpa</connection.url>-->
                <connection.url>${openjpa.postgresql.url}</connection.url>
                <connection.username>${openjpa.postgresql.username}</connection.username>
                <connection.password>${openjpa.postgresql.password}</connection.password>
                <jdbc.DBDictionary />

                <!-- DBCP overrides -->
                <dbcp.maxIdle>20</dbcp.maxIdle>
                <dbcp.minIdle>0</dbcp.minIdle>
                <dbcp.maxTotal>20</dbcp.maxTotal>

                <postgresql.server.version>11</postgresql.server.version>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>postgres:${postgresql.server.version}</name>
                                    <run>
                                        <env>
                                            <PGDATA>/pg</PGDATA>
                                            <POSTGRES_DB>${openjpa.postgresql.dbname}</POSTGRES_DB>
                                            <POSTGRES_USER>${connection.username}</POSTGRES_USER>
                                            <POSTGRES_PASSWORD>${connection.password}</POSTGRES_PASSWORD>
                                        </env>
                                        <ports>
                                            <port>${docker.external.postgresql.port}:5432</port>
                                        </ports>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                    </plugin>
                </plugins>
            </build>

        </profile>

        <!-- Profile for testing with SQLServer DB using MS JDBC driver -->
        <profile>
            <!--
                Example MS SQL profile. You can use this profile if you:
                1) have the MS SQL artifacts installed in a local repo and
                supply the URL:
                    -Dmssql.maven.repo=http://my.local.repo
                2) have a copy of the MS SQL JDBC driver from:
                    http://msdn.microsoft.com/en-us/data/aa937724.aspx
                and run the following commands :
                    mvn install:install-file -Dfile=${path to sqljdbc.jar} \
                                             -DgroupId=com.microsoft.sqlserver \
                                             -DartifactId=sqljdbc \
                                             -Dversion=2.0 \
                                             -Dpackaging=jar

                You must also set the following properties:
                    -Dopenjpa.mssql.url=jdbc:sqlserver://<HOST>:<PORT>;\
                        DataBaseName=<DBNAME>
                    -Dopenjpa.mssql.username=<mssql_uid>
                    -Dopenjpa.mssql.password=<mssql_pwd>

                Optionally, you can override the default groupId and version
                by also supplying the following properties:
                    -Dmssql.groupid=com.microsoft.sqlserver
                    -Dmssql.version=2.0
                If you are using Java SE 6 or later, you will need to use:
                    -Dmssql.artifactid=sqljdbc4
            -->
            <id>test-mssql</id>
            <activation>
                <property>
                    <name>test-mssql</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>${mssql.groupid}</groupId>
                    <artifactId>${mssql.artifactid}</artifactId>
                    <version>${mssql.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <mssql.maven.repo>http://not.real.repository</mssql.maven.repo>
                <mssql.groupid>com.microsoft.sqlserver</mssql.groupid>
                <mssql.artifactid>sqljdbc</mssql.artifactid>
                <mssql.version>2.0</mssql.version>
                <connection.driver.name>com.microsoft.sqlserver.jdbc.SQLServerDriver</connection.driver.name>
                <!--<connection.url>jdbc:sqlserver://localhost/OPENJPA</connection.url>-->
                <connection.url>${openjpa.mssql.url}</connection.url>
                <connection.username>${openjpa.mssql.username}</connection.username>
                <connection.password>${openjpa.mssql.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
            <repositories>
                <repository>
                    <id>mssql.repository</id>
                    <name>MSSQL Repository</name>
                    <url>${mssql.maven.repo}</url>
                    <layout>default</layout>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                        <checksumPolicy>ignore</checksumPolicy>
                    </releases>
                </repository>
            </repositories>
        </profile>

        <!-- Profile for testing with Microsoft SQLServer DB via Docker -->
        <profile>
            <id>test-mssql-docker</id>
            <activation>
                <property>
                    <name>test-mssql-docker</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.microsoft.sqlserver</groupId>
                    <artifactId>mssql-jdbc</artifactId>
                    <version>${mssql.connector.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>com.microsoft.sqlserver.jdbc.SQLServerDriver</connection.driver.name>

                <!-- default settings for local docker -->
                <docker.external.mssql.port>1433</docker.external.mssql.port>
                <openjpa.mssql.dbname>openjpatst</openjpa.mssql.dbname>
                <openjpa.mssql.username>SA</openjpa.mssql.username>
                <openjpa.mssql.password>OpenJP8tst</openjpa.mssql.password>
                <!--
                  * sendTimeAsDatetime=false is important to make SQLServer understand java.sql.Time parameters.
                  * Alternatively you can set the SQLServerDictionary parameter sendTimeAsString=true
                 -->
                <openjpa.mssql.url>jdbc:sqlserver://localhost:${docker.external.mssql.port};sendTimeAsDatetime=false</openjpa.mssql.url>

                <!--<connection.url>jdbc:postgresql://localhost/openjpa</connection.url>-->
                <connection.url>${openjpa.mssql.url}</connection.url>
                <connection.username>${openjpa.mssql.username}</connection.username>
                <connection.password>${openjpa.mssql.password}</connection.password>
                <jdbc.DBDictionary />

                <!-- DBCP overrides -->
                <dbcp.maxIdle>20</dbcp.maxIdle>
                <dbcp.minIdle>0</dbcp.minIdle>
                <dbcp.maxTotal>20</dbcp.maxTotal>

                <mssql.server.version>2017-CU12-ubuntu</mssql.server.version>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>mcr.microsoft.com/mssql/server:${mssql.server.version}</name>
                                    <run>
                                        <env>
                                            <!-- For more info on the EULA see https://go.microsoft.com/fwlink/?LinkId=746388 -->
                                            <ACCEPT_EULA>Y</ACCEPT_EULA>
                                            <SA_PASSWORD>${connection.password}</SA_PASSWORD>
                                        </env>
                                        <ports>
                                            <port>${docker.external.mssql.port}:1433</port>
                                        </ports>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                    </plugin>
                </plugins>
            </build>

        </profile>

        <!-- Profile for testing with SQLServer DB using the jTDS driver -->
        <profile>
            <id>test-sqlserver</id>
            <activation>
                <property>
                    <name>test-sqlserver</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>net.sourceforge.jtds</groupId>
                    <artifactId>jtds</artifactId>
                    <version>${jtds.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <jtds.version>1.2</jtds.version>
                <connection.driver.name>net.sourceforge.jtds.jdbc.Driver</connection.driver.name>
                <!--<connection.url>jdbc:jtds:sqlserver://localhost:1433/OPENJPA</connection.url>-->
                <connection.url>${openjpa.sqlserver.url}</connection.url>
                <connection.username>${openjpa.sqlserver.username}</connection.username>
                <connection.password>${openjpa.sqlserver.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
        </profile>

        <!-- Profile for testing with Sybase DB using the jTDS driver -->
        <profile>
            <id>test-sybase</id>
            <activation>
                <property>
                    <name>test-sybase</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>net.sourceforge.jtds</groupId>
                    <artifactId>jtds</artifactId>
                    <version>${jtds.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <jtds.version>1.2</jtds.version>
                <connection.driver.name>net.sourceforge.jtds.jdbc.Driver</connection.driver.name>
                <!--<connection.url>jdbc:jtds:sybase://localhost/OPENJPA</connection.url>-->
                <connection.url>${openjpa.sybase.url}</connection.url>
                <connection.username>${openjpa.sybase.username}</connection.username>
                <connection.password>${openjpa.sybase.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
        </profile>

        <!-- Profile for testing with Sybase DB using the jConnect driver -->
        <profile>
            <id>test-sybase-jconnect</id>
            <dependencies>
                <dependency>
                    <groupId>${jconnect.groupId}</groupId>
                    <artifactId>${jconnect.artifactId}</artifactId>
                    <version>${jconnect.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>com.sybase.jdbc3.jdbc.SybDriver</connection.driver.name>
                <!--<connection.url>jdbc:sybase:Tds:localhost:7100/OPENJPA</connection.url>-->
                <connection.url>${openjpa.sybase.url}</connection.url>
                <connection.username>${openjpa.sybase.username}</connection.username>
                <connection.password>${openjpa.sybase.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
        </profile>

        <!-- Profile for testing with Ingres DB -->
        <profile>
            <id>test-ingres</id>
            <activation>
                <property>
                    <name>test-ingres</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.ingres.jdbc</groupId>
                    <artifactId>iijdbc</artifactId>
                    <version>${ingres.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <ingres.version>9.2-3.4.8</ingres.version>
                <connection.driver.name>com.ingres.jdbc.IngresDriver</connection.driver.name>
                <!--<connection.url>jdbc:ingres://localhost/OPENJPA</connection.url>-->
                <connection.url>${openjpa.ingres.url}</connection.url>
                <connection.username>${openjpa.ingres.username}</connection.username>
                <connection.password>${openjpa.ingres.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
        </profile>

        <!-- Profile for testing with HerdDB -->
        <profile>
            <id>test-herddb-docker</id>
            <activation>
                <property>
                    <name>test-herddb-docker</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.herddb</groupId>
                    <artifactId>herddb-jdbc</artifactId>
                    <version>0.22.0</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>herddb.jdbc.Driver</connection.driver.name>
                <tests.openjpa.driverDataSource>simple</tests.openjpa.driverDataSource>


                <connection.url>jdbc:herddb:localhost:7000</connection.url>
                <connection.username>sa</connection.username>
                <connection.password>hdb</connection.password>
                <jdbc.DBDictionary />

                <!-- DBCP overrides for testing -->
                <dbcp.maxIdle>5</dbcp.maxIdle>
                <dbcp.minIdle>1</dbcp.minIdle>

            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>herddb/herddb:latest</name>
                                    <run>
                                        <ports>
                                            <port>7000:7000</port>
                                        </ports>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- Profile for testing with a custom DB using a system jar -->
        <!--
            For example, to test with Oracle, you might run:
        mvn test -Dtest=TestPersistence -Ptest-custom \
          -Dopenjpa.custom.driverjar=$(pwd)/drivers/jdbc-oracle-10_2_0_1_0.jar \
          -Dopenjpa.custom.driverclass=oracle.jdbc.driver.OracleDriver \
          -Dopenjpa.custom.url=jdbc:oracle:thin:@HOST:PORT:DBNAME \
          -Dopenjpa.custom.username=USERNAME \
          -Dopenjpa.custom.password=PASSWORD
        -->
        <profile>
            <id>test-custom</id>
            <activation>
                <property>
                    <name>test-custom</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>openjpa.customdriver</groupId>
                    <artifactId>openjpa.customdriver</artifactId>
                    <version>1.0</version>
                    <scope>system</scope>
                    <systemPath>${openjpa.custom.driverjar}</systemPath>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>${openjpa.custom.driverclass}</connection.driver.name>
                <connection.url>${openjpa.custom.url}</connection.url>
                <connection.username>${openjpa.custom.username}</connection.username>
                <connection.password>${openjpa.custom.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
        </profile>


        <!-- Profile for testing with a custom DB using two system jars.
             Some databases (DB2) use more than one jar for their JDBC provider.
             Functionally this is identical to the previous profile, with a
             second system dependency added.
          -->
        <!--
            For example, to test with DB2, you might run:
        mvn test -Dtest=TestPersistence -Ptest-custom2 \
          -Dopenjpa.custom.driverjar1=$(pwd)/drivers/db2jcc.jar \
          -Dopenjpa.custom.driverjar2=$(pwd)/drviers/db2jcc_license_cu.jar \
          -Dopenjpa.custom.driverclass=com.ibm.db2.jcc.DB2Driver \
          -Dopenjpa.custom.url=jdbc:db2://HOST:PORT/DBNAME \
          -Dopenjpa.custom.username=USERNAME \
          -Dopenjpa.custom.password=PASSWORD
        -->
        <profile>
            <id>test-custom2</id>
            <activation>
                <property>
                    <name>test-custom2</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>openjpa.customdriver1</groupId>
                    <artifactId>openjpa.customdriver1</artifactId>
                    <version>1.0</version>
                    <scope>system</scope>
                    <systemPath>${openjpa.custom.driverjar1}</systemPath>
                </dependency>
                <dependency>
                    <groupId>openjpa.customdriver2</groupId>
                    <artifactId>openjpa.customdriver2</artifactId>
                    <version>1.0</version>
                    <scope>system</scope>
                    <systemPath>${openjpa.custom.driverjar2}</systemPath>
                </dependency>
            </dependencies>
            <properties>
                <connection.driver.name>${openjpa.custom.driverclass}</connection.driver.name>
                <connection.url>${openjpa.custom.url}</connection.url>
                <connection.username>${openjpa.custom.username}</connection.username>
                <connection.password>${openjpa.custom.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
        </profile>

        <!--
            The test-custom2 profile does not work very well when used with a
            continuous build system. As a convenience I've added profiles for
            some of the proprietary databases to make testing easier.
          -->
        <profile>
            <!--
                Example db2 profile. You can use this profile if you:
                1) have the DB2 artifacts installed in a local repo and supply
                the URL:
                -Ddb2.maven.repo=http://my.local.repo
                2) have a copy of the DB2 JCC driver and run the following
                commands :
                    mvn install:install-file -Dfile=${path to db2jcc.jar} \
                                             -DgroupId=com.ibm.db2 \
                                             -DartifactId=jcc-driver \
                                             -Dversion=9.5 \
                                             -Dpackaging=jar

                    mvn install:install-file -Dfile=${path to db2jcc_license.jar} \
                                             -DgroupId=com.ibm.db2 \
                                             -DartifactId=jcc-license \
                                             -Dversion=9.5 \
                                             -Dpackaging=jar

                You must also set the following properties:
                    -Dopenjpa.db2.url=jdbc:db2://<HOST>:<PORT>/<DBNAME>
                    -Dopenjpa.db2.username=<db2_uid>
                    -Dopenjpa.db2.password=<db2_pwd>

                Optionally, you can override the default DB2 groupId,
                artifactIds and version by also supplying the following
                properties:
                    -Ddb2.groupid=com.ibm.db2
                    -Dids.driver.artifactid=jcc-driver
                    -Dids.license.artifactid=jcc-license
                    -Ddb2.version=9.5
            -->
            <id>test-db2-jcc</id>
            <activation>
                <property>
                    <name>test-db2-jcc</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>${db2.groupid}</groupId>
                    <artifactId>${db2.driver.artifactid}</artifactId>
                    <version>${db2.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>${db2.groupid}</groupId>
                    <artifactId>${db2.license.artifactid}</artifactId>
                    <version>${db2.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <db2.maven.repo>http://not.a.real.repository</db2.maven.repo>
                <db2.groupid>com.ibm.db2</db2.groupid>
                <db2.driver.artifactid>jcc-driver</db2.driver.artifactid>
                <db2.license.artifactid>jcc-license</db2.license.artifactid>
                <db2.version>9.5</db2.version>
                <connection.driver.name>com.ibm.db2.jcc.DB2Driver</connection.driver.name>
                <!--<connection.url>jdbc:db2://localhost/openjpa</connection.url>-->
                <connection.url>${openjpa.db2.url}</connection.url>
                <connection.username>${openjpa.db2.username}</connection.username>
                <connection.password>${openjpa.db2.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
            <repositories>
                <repository>
                    <id>db2.repository</id>
                    <name>DB2 Repository</name>
                    <url>${db2.maven.repo}</url>
                    <layout>default</layout>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                        <checksumPolicy>ignore</checksumPolicy>
                    </releases>
                </repository>
            </repositories>
        </profile>

        <!-- Profile for testing Apache Derby with the DB2 JCC driver -->
        <profile>
            <id>test-derbyjcc</id>
            <activation>
                <property>
                    <name>test-derbyjcc</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>${db2.groupid}</groupId>
                    <artifactId>${db2.driver.artifactid}</artifactId>
                    <version>${db2.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>${db2.groupid}</groupId>
                    <artifactId>${db2.license.artifactid}</artifactId>
                    <version>${db2.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <db2.maven.repo>http://not.a.real.repository</db2.maven.repo>
                <db2.groupid>com.ibm.db2</db2.groupid>
                <db2.driver.artifactid>jcc-driver</db2.driver.artifactid>
                <db2.license.artifactid>jcc-license</db2.license.artifactid>
                <db2.version>9.5</db2.version>
                <!--
                    Note: DB must be created before using this profile,
                    which can be done by running:
                        mvn test -Dtest=<testcase> -Ptest-derbynet
                -->
                <openjpa.derbyjcc.url>jdbc:db2://localhost:1527/openjpa20</openjpa.derbyjcc.url>
                <!-- Note: commons-dbcp2 requires dummy values for uid/pwd -->
                <openjpa.derbyjcc.username>uid</openjpa.derbyjcc.username>
                <openjpa.derbyjcc.password>pwd</openjpa.derbyjcc.password>
                <connection.driver.name>com.ibm.db2.jcc.DB2Driver</connection.driver.name>
                <connection.url>${openjpa.derbyjcc.url}</connection.url>
                <connection.username>${openjpa.derbyjcc.username}</connection.username>
                <connection.password>${openjpa.derbyjcc.password}</connection.password>
            </properties>
            <repositories>
                <repository>
                    <id>db2.repository</id>
                    <name>DB2 Repository</name>
                    <url>${db2.maven.repo}</url>
                    <layout>default</layout>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                        <checksumPolicy>ignore</checksumPolicy>
                    </releases>
                </repository>
            </repositories>
        </profile>

        <!-- Profile for testing Informix with the DB2 JCC driver -->
        <profile>
            <!--
                Example Informix JCC profile. You can use this profile if you:
                1a) have the DB2 JCC artifacts installed in a local repo and
                supply the URL:
                -Dids.maven.repo=http://my.local.repo
                1b) or have a copy of the DB2 JCC driver and run the commands
                listed above in the test-db2-jcc profile.
        2) have the DRDA service enabled on the IDS server, which
                is usually port 9089

                You must also set the following properties:
                    -Dopenjpa.ids.url=jdbc:ids://<HOST>:<PORT>/<DBNAME>
                    -Dopenjpa.ids.username=<ids_uid>
                    -Dopenjpa.ids.password=<ids_pwd>

                Optionally, you can override the default DB2 JCC groupId,
                artifactIds and version by also supplying the following
                properties:
                    -Dids.groupid=com.ibm.db2
                    -Dids.driver.artifactid=jcc-driver
                    -Dids.license.artifactid=jcc-license
                    -Dids.version=9.5
            -->
            <id>test-ids-jcc</id>
            <activation>
                <property>
                    <name>test-ids-jcc</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>${ids.groupid}</groupId>
                    <artifactId>${ids.driver.artifactid}</artifactId>
                    <version>${ids.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>${ids.groupid}</groupId>
                    <artifactId>${ids.license.artifactid}</artifactId>
                    <version>${ids.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <ids.maven.repo>http://not.a.real.repository</ids.maven.repo>
                <ids.groupid>com.ibm.db2</ids.groupid>
                <ids.driver.artifactid>jcc-driver</ids.driver.artifactid>
                <ids.license.artifactid>jcc-license</ids.license.artifactid>
                <ids.version>9.5</ids.version>
                <connection.driver.name>com.ibm.db2.jcc.DB2Driver</connection.driver.name>
                <connection.url>${openjpa.ids.url}</connection.url>
                <connection.username>${openjpa.ids.username}</connection.username>
                <connection.password>${openjpa.ids.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
            <repositories>
                <repository>
                    <id>ids.repository</id>
                    <name>Informix Repository</name>
                    <url>${ids.maven.repo}</url>
                    <layout>default</layout>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                        <checksumPolicy>ignore</checksumPolicy>
                    </releases>
                </repository>
            </repositories>
        </profile>

        <!-- Profile for testing Informix with the Informix JDBC Driver -->
        <profile>
            <!--
                Example Informix profile. You can use this profile if you:
                1) have the Informix JDBC artifacts installed in a local repo and
                supply the URL:
                  -Dids.maven.repo=http://my.local.repo
                2) have a copy of the Informix driver and run the following
                commands :
                    mvn install:install-file -Dfile=${path to ifxjdbc.jar} \
                                             -DgroupId=com.informix \
                                             -DartifactId=informix-driver \
                                             -Dversion=3.70 \
                                             -Dpackaging=jar

                You must also set the following properties:
                    -Dopenjpa.ids.url=jdbc:informix-sqli://<HOST>:<PORT>:informixserver=<INFORMIXSERVER>;database=<DBNAME>
                    -Dopenjpa.ids.username=<ids_uid>
                    -Dopenjpa.ids.password=<ids_pwd>

                Optionally, you can override the default Informix groupId,
                artifactIds and version by also supplying the following
                properties:
                    -Dids.groupid=com.informix
                    -Dids.driver.artifactid=informix-driver
                    -Dids.version=3.70
            -->
            <id>test-ids-informix</id>
            <activation>
                <property>
                    <name>test-ids-informix</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>${ids.groupid}</groupId>
                    <artifactId>${ids.driver.artifactid}</artifactId>
                    <version>${ids.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <ids.maven.repo>http://not.a.real.repository</ids.maven.repo>
                <ids.groupid>com.informix</ids.groupid>
                <ids.driver.artifactid>informix-driver</ids.driver.artifactid>
                <ids.version>3.70</ids.version>
                <connection.driver.name>com.informix.jdbc.IfxDriver</connection.driver.name>
                <connection.url>${openjpa.ids.url}</connection.url>
                <connection.username>${openjpa.ids.username}</connection.username>
                <connection.password>${openjpa.ids.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
            <repositories>
                <repository>
                    <id>ids.repository</id>
                    <name>Informix Repository</name>
                    <url>${ids.maven.repo}</url>
                    <layout>default</layout>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                        <checksumPolicy>ignore</checksumPolicy>
                    </releases>
                </repository>
            </repositories>
        </profile>

        <!--
            Profile for testing with Oracle DB against a Docker image

            Attention: This might requiere a manual download of the Oracle JDBC driver.
            This driver (ojdbc6.jar) can be downloaded at the Oracle homepage.

            Then determine which version you got
            $> unzip -p ojdbc6.jar META-INF/MANIFEST.MF
            This will contain something like
            "Implementation-Version: 11.2.0.4.0"
            Use this version to install the JDBC driver into your local Maven repository
            with
            $> mvn install:file ...

            By default we use a ojdbc6 version hosted at Atlassian.
            For this to work we also need to add a repository section.
            We only use it for the ojdbc driver though.
        -->
        <profile>
            <id>test-oracle-docker</id>
            <activation>
                <property>
                    <name>test-oracle-docker</name>
                </property>
            </activation>
            <properties>
                <oracle.groupid>com.oracle.ojdbc</oracle.groupid>
                <oracle.artifactid>ojdbc8</oracle.artifactid>
                <oracle.version>19.3.0.0</oracle.version>

                <oracle.server.version>latest</oracle.server.version>
                <docker.external.oracle.port>1521</docker.external.oracle.port>

                <connection.driver.name>oracle.jdbc.driver.OracleDriver</connection.driver.name>
                <openjpa.oracle.database>openjpatst</openjpa.oracle.database>
                <openjpa.oracle.username>openjpatst</openjpa.oracle.username>
                <openjpa.oracle.password>openjpatst</openjpa.oracle.password>
                <openjpa.oracle.SID>xe</openjpa.oracle.SID>
                <openjpa.oracle.url>jdbc:oracle:thin:@localhost:${docker.external.oracle.port}:${openjpa.oracle.SID}</openjpa.oracle.url>

                <connection.url>${openjpa.oracle.url}</connection.url>
                <connection.username>${openjpa.oracle.username}</connection.username>
                <connection.password>${openjpa.oracle.password}</connection.password>
                <jdbc.DBDictionary />

                <!-- DBCP overrides -->
                <dbcp.maxIdle>20</dbcp.maxIdle>
                <dbcp.minIdle>0</dbcp.minIdle>
                <dbcp.maxTotal>20</dbcp.maxTotal>

            </properties>
            <dependencies>
                <dependency>
                    <groupId>${oracle.groupid}</groupId>
                    <artifactId>${oracle.artifactid}</artifactId>
                    <version>${oracle.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>


            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <!--<name>oracledb19c/oracle.19.3.0-ee:oracle19.3.0-ee</name>-->
                                    <name>oracleinanutshell/oracle-xe-11g</name>
                                    <!--<name>pvargacl/oracle-xe-18.4.0:latest</name>-->
                                    <run>
                                        <volumes>
                                            <bind>
                                                <volume>${project.basedir}/src/test/sql/oracle-docker:/docker-entrypoint-initdb.d/</volume>
                                            </bind>
                                        </volumes>
                                        <ports>
                                            <port>${docker.external.oracle.port}:1521</port>
                                        </ports>
                                    </run>
                                </image>
                            </images>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- Profile for testing with Oracle DB -->
        <profile>
            <!--
                Example oracle profile. You can use this profile if you:
                1) have the Oracle artifacts installed in a local repo and
                supply the URL:
                -Doracle.maven.repo=http://my.local.repo
                2) have a copy of the Oracle driver and run the following
                command:
                    mvn install:install-file -Dfile=${path to ojdbc.jar} \
                                             -DgroupId=com.oracle \
                                             -DartifactId=jdbc-driver \
                                             -Dversion=10g \
                                             -Dpackaging=jar

                You must also set the following properties:
                    -Dopenjpa.oracle.url
                    -Dopenjpa.oracle.username
                    -Dopenjpa.oracle.password

                Optionally, you can override the default Oracle groupId and
                version by also supplying the following properties:
                    -Doracle.groupid=com.oracle
                    -Doracle.version=10g
            -->
            <id>test-oracle</id>
            <activation>
                <property>
                    <name>test-oracle</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>${oracle.groupid}</groupId>
                    <artifactId>${oracle.artifactid}</artifactId>
                    <version>${oracle.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <oracle.maven.repo>http://not.a.real.repository</oracle.maven.repo>
                <oracle.groupid>com.oracle.ojdbc</oracle.groupid>
                <oracle.artifactid>ojdbc8</oracle.artifactid>
                <oracle.version>19.3.0.0</oracle.version>
                <connection.driver.name>oracle.jdbc.driver.OracleDriver</connection.driver.name>
                <!--<connection.url>jdbc:oracle:thin:@localhost:1521:OPENJPA</connection.url>-->
                <connection.url>${openjpa.oracle.url}</connection.url>
                <connection.username>${openjpa.oracle.username}</connection.username>
                <connection.password>${openjpa.oracle.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
        </profile>

        <!-- Profile for testing IBM SolidDB -->
        <profile>
            <id>test-soliddb</id>
            <activation>
                <property>
                    <name>test-soliddb</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>${soliddb.groupid}</groupId>
                    <artifactId>${soliddb.driver.artifactid}</artifactId>
                    <version>${soliddb.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <soliddb.maven.repo>http://not.a.real.repository</soliddb.maven.repo>
                <soliddb.groupid>com.ibm.soliddb</soliddb.groupid>
                <soliddb.driver.artifactid>soliddb</soliddb.driver.artifactid>
                <soliddb.version>6.5</soliddb.version>
                <connection.driver.name>solid.jdbc.SolidDriver</connection.driver.name>
                <!--<connection.url>jdbc:solid://localhost:2315</connection.url>-->
                <connection.url>${openjpa.soliddb.url}</connection.url>
                <connection.username>${openjpa.soliddb.username}</connection.username>
                <connection.password>${openjpa.soliddb.password}</connection.password>
                <jdbc.DBDictionary />
            </properties>
            <repositories>
                <repository>
                    <id>soliddb.repository</id>
                    <name>SolidDB Repository</name>
                    <url>${soliddb.maven.repo}</url>
                    <layout>default</layout>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                        <checksumPolicy>ignore</checksumPolicy>
                    </releases>
                </repository>
            </repositories>
        </profile>

    </profiles>

    <!-- default versions for dependencies that child modules may include -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
                <version>${pool2.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>jakarta.persistence</groupId>
                <artifactId>jakarta.persistence-api</artifactId>
                <version>${jakarta.persistence-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.annotation</groupId>
                <artifactId>jakarta.annotation-api</artifactId>
                <version>${jakarta.annotation-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.validation</groupId>
                <artifactId>jakarta.validation-api</artifactId>
                <version>${jakarta.validation-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.transaction</groupId>
                <artifactId>jakarta.transaction-api</artifactId>
                <version>${jakarta.transaction-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.jms</groupId>
                <artifactId>jakarta.jms-api</artifactId>
                <version>${jakarta.jms-api.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.bval</groupId>
                <artifactId>org.apache.bval.bundle</artifactId>
                <version>${bval.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.derby</groupId>
                <artifactId>derby</artifactId>
                <version>${derby.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.derby</groupId>
                <artifactId>derbytools</artifactId>
                <version>${derby.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.derby</groupId>
                <artifactId>derbyclient</artifactId>
                <version>${derby.version}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.connector.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-dbcp2</artifactId>
                <version>${dbcp2.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.2.1</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>2.2.1</version>
            </dependency>
            <dependency>
                <groupId>org.hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
                <version>${hsqldb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>${postgresql.connector.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta-regexp</groupId>
                <artifactId>jakarta-regexp</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>${log4j2.version}</version>
            </dependency>
            <dependency>
                <!-- for compiling against log4j-1.2.x we use the compat layer from log4j2 -->
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-1.2-api</artifactId>
                <version>${log4j2.version}</version>
            </dependency>

            <dependency>
              <groupId>io.fabric8</groupId>
              <artifactId>kubernetes-client</artifactId>
              <version>${kubernetes-client.version}</version>
            </dependency>
            <dependency>
              <groupId>io.fabric8</groupId>
              <artifactId>kubernetes-server-mock</artifactId>
              <version>${kubernetes-client.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant</artifactId>
                <version>${ant.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jmock</groupId>
                <artifactId>jmock</artifactId>
                <version>${jmock.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jmock</groupId>
                <artifactId>jmock-junit4</artifactId>
                <version>${jmock.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>annotations</artifactId>
                <version>3.0.1</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <defaultGoal>install</defaultGoal>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
            </testResource>
        </testResources>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <release>${java.class.version}</release>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <release>${java.class.version}</release>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <doclint>none</doclint>
                        <additionalJOption>
                            ${javadoc.additionalparam}
                        </additionalJOption>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>${surefire.jvm.args}</argLine>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                        <trimStackTrace>false</trimStackTrace>
                        <useSystemClassLoader>true</useSystemClassLoader>
                        <excludes>
                            <!-- exclude classes that include a $; inner classes
                                 are not test cases per OpenJPA standards -->
                            <exclude>org/apache/openjpa/**/*$*.class</exclude>
                        </excludes>
                    <systemProperties>
                        <property>
                            <name>openjpa.Log</name>
                            <value>${openjpa.Log}</value>
                        </property>
                        <property>
                            <name>openjpa.DynamicEnhancementAgent</name>
                            <value>${openjpa.DynamicEnhancementAgent}</value>
                        </property>
                        <property>
                            <name>openjpa.ConnectionDriverName</name>
                            <value>${connection.driver.name}</value>
                        </property>
                        <property>
                            <name>openjpa.ConnectionURL</name>
                            <value>${connection.url}</value>
                        </property>
                        <property>
                            <name>openjpa.ConnectionUserName</name>
                            <value>${connection.username}</value>
                        </property>
                        <property>
                            <name>openjpa.ConnectionPassword</name>
                            <value>${connection.password}</value>
                        </property>
                        <property>
                            <name>openjpa.jdbc.DBDictionary</name>
                            <value>${jdbc.DBDictionary}</value>
                        </property>
                        <property>
                            <name>derby.stream.error.file</name>
                            <value>target/derby.log</value>
                        </property>
                        <property>
                            <name>derby.locks.deadlockTimeout</name>
                            <value>${derby.locks.deadlockTimeout}</value>
                        </property>
                        <property>
                            <name>derby.locks.waitTimeout</name>
                            <value>${derby.locks.waitTimeout}</value>
                        </property>
                        <property>
                            <name>openjpa.ConnectionProperties</name>
                            <value>${dbcp.args}</value>
                        </property>
                        <property>
                            <name>tests.openjpa.allowfailure</name>
                            <value>${tests.openjpa.allowfailure}</value>
                        </property>
                        <property>
                            <name>openjpa.jdbc.DriverDataSource</name>
                            <value>${tests.openjpa.driverDataSource}</value>
                        </property>
                    </systemProperties>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>io.fabric8</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.45.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>${version.maven.surefire}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <version>3.0.5</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>3.2.1</version>
                    <configuration>
                        <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                        <revisionOnScmFailure>offline</revisionOnScmFailure>
                        <useLastCommittedRevision>true</useLastCommittedRevision>
                        <format>{0,date,long} at {0,time,short}</format>
                        <items>
                            <item>timestamp</item>
                        </items>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>create</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <version>0.16.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <useReleaseProfile>false</useReleaseProfile>
                        <tagNameFormat>@{project.version}</tagNameFormat>

                        <!--
                            The openbooks example contains a build.xml which tries to add ~/.m2/repository/../openjpa-all-nnn.jar
                            to the classpath. But since the maven-release-plugin by default only prepares with 'clean verify'
                            the jar doesn't end in the local m2 repo. It will only be in the opanjpa-all/target folder.
                            For now I forced an 'install', but we should ultimately just fix the openbooks example.
                        -->
                        <preparationGoals>clean install</preparationGoals>

                        <goals>deploy</goals>
                        <arguments>-Papache-release,docbook-profile,test-derby,bval</arguments>
                        <autoVersionSubmodules>true</autoVersionSubmodules>

                        <!-- special config for git -->
                        <pushChanges>false</pushChanges>
                        <localCheckout>true</localCheckout>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>taglist-maven-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.6.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>default-jar</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <archive>
                                    <manifest>
                                       <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                    </manifest>
                                    <manifestEntries>
                                        <Implementation-Build>${buildNumber}</Implementation-Build>
                                        <Implementation-Date>${timestamp}</Implementation-Date>
                                    </manifestEntries>
                                </archive>
                            </configuration>
                        </execution>
                        <execution>
                            <id>attach-tests</id>
                            <goals>
                                <goal>test-jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>5.1.9</version>
                    <extensions>true</extensions>
                    <configuration>
                        <instructions>
                            <Implementation-Title>${project.name}</Implementation-Title>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Bundle-DocURL>${project.url}</Bundle-DocURL>
                        </instructions>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.karaf.tooling</groupId>
                    <artifactId>karaf-maven-plugin</artifactId>
                    <version>4.4.6</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.6.0</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.openjpa</groupId>
                    <artifactId>openjpa-maven-plugin</artifactId>
                    <version>${project.version}</version>
                </plugin>

                <plugin>
                    <groupId>com.agilejava.docbkx</groupId>
                    <artifactId>docbkx-maven-plugin</artifactId>
                    <version>2.0.17</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <executions>
                    <execution>
                        <id>test-source-compile</id>
                        <phase>process-test-sources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <release>${java.class.version}</release>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>checkstyle</goal>
                        </goals>
                        <configuration>
                            <failsOnError>true</failsOnError>
                            <consoleOutput>true</consoleOutput>
                            <includeTestSourceDirectory>true</includeTestSourceDirectory>
                            <excludes>**/*_.java</excludes>
                            <logViolationsToConsole>true</logViolationsToConsole>
                            <checkstyleRules>
                                <module name="Checker">
                                    <module name="NewlineAtEndOfFile">
                                        <property name="lineSeparator" value="lf" />
                                    </module>
                                    <module name="LineLength">
                                        <property name="max" value="150" />
                                    </module>
                                    <module name="TreeWalker">
                                        <module name="RegexpSinglelineJava">
                                            <property name="format" value="System\.(out|err)\.print(ln)?\(" />
                                            <property name="ignoreComments" value="true" />
                                        </module>
                                        <module name="SuppressionCommentFilter">
                                            <property name="offCommentFormat" value="// START - ALLOW PRINT STATEMENTS" />
                                            <property name="onCommentFormat" value="// STOP - ALLOW PRINT STATEMENTS" />
                                        </module>
                                    </module>

                                    <!-- File location is specified in root pom.xml via ${checkstyle.suppressions.location} -->
                                    <module name="SuppressionFilter">
                                        <property name="file" value="${checkstyle.suppressions.location}" />
                                        <property name="optional" value="true" />
                                    </module>
                                </module>
                            </checkstyleRules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>[3.3.9,)</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>[11,)</version>
                                </requireJavaVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludeSubProjects>false</excludeSubProjects>
                    <numUnapprovedLicenses>0</numUnapprovedLicenses>
                    <excludes>
                        <!-- generated content -->
                        <exclude>**/.*/**</exclude>
                        <exclude>**/target/**/*</exclude>
                    </excludes>
                    <includes>
                        <!-- only check common source files -->
                        <include>**/src/**/*.bat</include>
                        <include>**/src/**/*.css</include>
                        <include>**/src/**/*.html</include>
                        <include>**/src/**/*.java</include>
                        <include>**/src/**/*.js</include>
                        <include>**/src/**/*.jsp</include>
                        <include>**/src/**/*.properties</include>
                        <include>**/src/**/*.sh</include>
                        <include>**/src/**/*.txt</include>
                        <include>**/src/**/*.vm</include>
                        <include>**/src/**/*.xml</include>
                    </includes>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>3.0.0</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <show>package</show>
                    <quiet>true</quiet>
                    <release>${java.class.version}</release>
                    <links>
                        <link>https://docs.oracle.com/en/java/javase/11/docs/api/</link>
                    </links>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>javadoc</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>

</project>
