<?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>29</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.0.1-SNAPSHOT</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.5.1</hsqldb.version>
        <mysql.connector.version>5.1.49</mysql.connector.version>
        <mariadb.connector.version>2.7.2</mariadb.connector.version>
        <postgresql.connector.version>42.5.1</postgresql.connector.version>
        <mssql.connector.version>11.2.1.jre8</mssql.connector.version>

        <!-- other common versions -->
        <kubernetes-client.version>6.2.0</kubernetes-client.version>
        <slf4j.version>1.7.23</slf4j.version>
        <!-- Compile Java source/target class level -->
        <compile.class.source>${java.class.version}</compile.class.source>
        <compile.class.target>${java.class.version}</compile.class.target>
        <compile.testclass.source>${java.testclass.version}</compile.testclass.source>
        <compile.testclass.target>${java.testclass.version}</compile.testclass.target>

        <maven.javadoc.version>3.0.1</maven.javadoc.version>
        <javadoc.additionalparam />
        <maven.surefire.version>3.0.0-M7</maven.surefire.version>

        <xbean.version>4.23</xbean.version>
        <bval.version>3.0.0</bval.version>
        <log4j2.version>2.19.0</log4j2.version>
        <ant.version>1.10.12</ant.version>

        <jmock.version>2.9.0</jmock.version>
        <dbcp2.version>2.8.0</dbcp2.version>
        <pool2.version>2.9.0</pool2.version>

        <jakarta.annotation-api.version>2.1.1</jakarta.annotation-api.version>
        <jakarta.persistence-api.version>3.0.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>HEAD</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>
                        <version>1.6</version>
                    </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>
                        <version>${maven.javadoc.version}</version>
                        <configuration>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <additionalparam>
                                ${javadoc.additionalparam} -Xdoclint:none
                            </additionalparam>
                            <subpackages>org.apache.openjpa</subpackages>
                            <verbose>false</verbose>
                            <maxmemory>1024m</maxmemory>
                            <links>
                                <link>https://download.oracle.com/javase/8/docs/api/</link>
                                <link>https://download.oracle.com/javaee/8/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>
                       <version>${maven.surefire.version}</version>
                       <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>
                    <version>3.8.0</version>
                    <configuration>
                        <source>${compile.class.source}</source>
                        <target>${compile.class.target}</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.3.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven.javadoc.version}</version>
                    <configuration>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <additionalparam>
                            ${javadoc.additionalparam} -Xdoclint:none
                        </additionalparam>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven.surefire.version}</version>
                    <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.36.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>${maven.surefire.version}</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>1.4</version>
                    <configuration>
                        <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                        <revisionOnScmFailure>offline</revisionOnScmFailure>
                        <useLastCommittedRevision>true</useLastCommittedRevision>
                        <timestampFormat>{0,date,long} at {0,time,short}</timestampFormat>
                    </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.12</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.1.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.3</version>
                    <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>1.8</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.ant</groupId>
                            <artifactId>ant-jsch</artifactId>
                            <version>1.10.9</version>
                        </dependency>
                        <dependency>
                            <groupId>ant-contrib</groupId>
                            <artifactId>ant-contrib</artifactId>
                            <version>1.0b3</version>
                            <!-- tries to pull in older ant-1.5.jar -->
                            <exclusions>
                                <exclusion>
                                    <groupId>ant</groupId>
                                    <artifactId>ant</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>taglist-maven-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>3.1.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.1.0</version>
                    <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>4.0.0</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.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.0.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>
                            <source>${compile.testclass.source}</source>
                            <target>${compile.testclass.target}</target>
                        </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>
                <version>3.0.0-M3</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>[3.3.9,)</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>[1.8,)</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>
                <version>${maven.javadoc.version}</version>
                <configuration>
                    <show>package</show>
                    <quiet>true</quiet>
                    <source>${java.class.version}</source>
                    <links>
                        <link>https://download.oracle.com/javase/8/docs/api/</link>
                        <link>https://download.oracle.com/javaee/8/api/</link>
                    </links>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>javadoc</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>

</project>
