<?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.0-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 Software License 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>http://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>http://mail-archives.apache.org/mod_mbox/openjpa-dev/</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>http://mail-archives.apache.org/mod_mbox/openjpa-users/</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>http://mail-archives.apache.org/mod_mbox/openjpa-commits/</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>
    </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>http://download.oracle.com/javase/8/docs/api/</link>
                                <link>http://download.oracle.com/javaee/8/api/</link>
                                <link>http://commons.apache.org/collections/api-release/</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>http://download.oracle.com/javase/8/docs/api/</link>
                        <link>http://download.oracle.com/javaee/8/api/</link>
                        <link>http://commons.apache.org/collections/api-release/</link>
                    </links>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>javadoc</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>

</project>
