<?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>21</version>
    </parent>

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

    <version>3.1.1-SNAPSHOT</version>

    <properties>
        <java.class.version>1.8</java.class.version>
        <java.testclass.version>1.8</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.config.location>openjpa-project${file.separator}checkstyle.xml</checkstyle.config.location>
        <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.maxpermsize>512m</test.jvm.maxpermsize>
        <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>
        <!--turn on sources.jar generation by setting to verify and true -->
        <createSource>none</createSource>
        <createSources>false</createSources>
        <!-- common JDBC driver versions -->
        <derby.version>10.14.2.0</derby.version>
        <hsqldb.version>2.4.1</hsqldb.version>
        <mysql.connector.version>5.1.47</mysql.connector.version>
        <mariadb.connector.version>2.2.0</mariadb.connector.version>
        <postgresql.connector.version>42.2.5</postgresql.connector.version>
        <mssql.connector.version>7.2.1</mssql.connector.version>

        <!-- other common versions -->
        <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>2.22.0</maven.surefire.version>

        <bval.version>1.1.2</bval.version>
        <jmock.version>2.9.0</jmock.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</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>
    </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>**/javax.persistence.spi.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>
            <properties>
                <skip-bin-assembly>true</skip-bin-assembly>
            </properties>
            <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>
            </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.196</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 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>
            </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.3</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>
                <openjpa.mssql.url>jdbc:sqlserver://localhost:${docker.external.mssql.port}</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 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>
                <!-- by default we use the Atlassian 3rd Party repo, which contains the dependency -->
                <oracle.maven.repo>https://packages.atlassian.com/maven-3rdparty/</oracle.maven.repo>

                <oracle.groupid>com.oracle</oracle.groupid>
                <oracle.artifactid>ojdbc6</oracle.artifactid>
                <oracle.version>11.2.0.4.0-atlassian-hosted</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>

            <repositories>
                <repository>
                    <id>oracle.repository</id>
                    <name>Oracle Repository</name>
                    <url>${oracle.maven.repo}</url>
                    <layout>default</layout>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </repository>
            </repositories>

            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <configuration>
                            <images>
                                <image>
                                    <name>sath89/oracle-12c:${oracle.server.version}</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</oracle.groupid>
                <oracle.artifactid>jdbc-driver</oracle.artifactid>
                <oracle.version>11.2.0.1-jdbc6</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>
            <repositories>
                <repository>
                    <id>oracle.repository</id>
                    <name>Oracle Repository</name>
                    <url>${oracle.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 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>2.6.0</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-collections4</artifactId>
                <version>4.3</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.serp</groupId>
                <artifactId>serp</artifactId>
                <version>1.15.1</version>
                <exclusions>
                  <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                  </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jpa_2.2_spec</artifactId>
                <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jms_1.1_spec</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jta_1.1_spec</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-validation_1.1_spec</artifactId>
                <version>1.0</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>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>2.6.0</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>2.11.1</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>1.9.7</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.12</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.1.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>
                    </systemProperties>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>io.fabric8</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.28.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.5</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.0.0</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>

                <!-- Newer versions of plugin will cause PDF build failures -->
                <plugin>
                    <groupId>com.agilejava.docbkx</groupId>
                    <artifactId>docbkx-maven-plugin</artifactId>
                    <version>2.0.17</version>
                </plugin>

                <!-- Ignore/Execute plugin execution -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>

                                <!--checkstyle plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-checkstyle-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>checkstyle</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>

                                <!--enforcer plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-enforcer-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>enforce</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>

                                <!--javadoc plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-javadoc-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>javadoc</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>

                                <!--maven plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>buildnumber-maven-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>create</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>

                                <!--javacc plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>javacc-maven-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>jjtree-javacc</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <execute />
                                    </action>
                                </pluginExecution>

                                <!--maven-antrun plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-antrun-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>run</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>

                                <!--enhance plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.openjpa</groupId>
                                        <artifactId>openjpa-maven-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>enhance</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>

                                <!--test-enhance plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.openjpa</groupId>
                                        <artifactId>openjpa-maven-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>test-enhance</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>

                                <!--unpack plugin -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-dependency-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>unpack</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </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>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>[3.3.9,)</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>[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>
