<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.5</version>
    </parent>
    <groupId>net.osgiliath.datamigrator</groupId>
    <artifactId>data-migrator</artifactId>
    <version>1.115</version>
    <packaging>pom</packaging>
    <name>datamigrator-parent</name>
    <ciManagement>
        <system>Github actions</system>
        <url>https://github.com/OsgiliathEnterprise/data-migrator/actions</url>
    </ciManagement>
    <issueManagement>
        <system>Github tickets</system>
        <url>https://github.com/OsgiliathEnterprise/data-migrator/issues</url>
    </issueManagement>
    <licenses>
        <license>
            <name>Apache Licence 2.0</name>
            <distribution>repo</distribution>
            <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
        </license>
    </licenses>
    <distributionManagement>
        <site>
            <id>github-pages</id>
            <name>Github GH Pages</name>
            <url>scm:git:git@github.com:OsgiliathEnterprise/data-migrator.git</url>
        </site>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://central.sonatype.com/repository/maven-snapshots</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <url>https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>
    <scm>
        <connection>scm:git:https://github.com/OsgiliathEnterprise/data-migrator.git</connection>
        <url>https://github.com/OsgiliathEnterprise/data-migrator</url>
        <developerConnection>scm:git:https://github.com/OsgiliathEnterprise/data-migrator.git</developerConnection>
        <tag>1.115</tag>
    </scm>
    <developers>
        <developer>
            <id>cmordant</id>
            <name>Charlie mordant</name>
            <organization>Osgiliath.net</organization>
            <organizationUrl>https://github.com/OsgiliathEnterprise</organizationUrl>
            <email>cmordant1@gmail.com</email>
            <roles>
                <role>Architect</role>
            </roles>
        </developer>
    </developers>
    <modules>
        <module>bom</module>
        <module>modules</module>
        <module>core</module>
        <module>datamigrator-archetype</module>
    </modules>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <java.version>21</java.version>
        <maven.version>3.3.9</maven.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven-enforcer-plugin.version>3.5.0</maven-enforcer-plugin.version>
        <license-maven-plugin.version>2.7.0</license-maven-plugin.version>
        <asciidoctor-maven-plugin.version>1.5.7</asciidoctor-maven-plugin.version>
        <asciidoctor.skip>false</asciidoctor.skip>
        <liquibase.version>4.31.1</liquibase.version>
        <spring-boot.version>3.5.5</spring-boot.version>
        <jdbc.h2.version>2.3.232</jdbc.h2.version>
        <jdbc.postgresql.version>42.7.7</jdbc.postgresql.version>
        <jdbc.mysql.version>9.3.0</jdbc.mysql.version>
        <jdbc.oracle.version>23.9.0.25.07</jdbc.oracle.version>
        <jdbc.mssql.version>12.10.1.jre11</jdbc.mssql.version>
        <jdbc.mariadb-java-client.version>3.5.4</jdbc.mariadb-java-client.version>
        <hibernate.version>6.6.26.Final</hibernate.version>
        <hibernate-tools.version>${hibernate.version}</hibernate-tools.version>
        <maven-surefire-plugin.version>3.5.3</maven-surefire-plugin.version>
        <maven-failsafe-plugin.version>3.5.3</maven-failsafe-plugin.version>
        <querydsl.version>5.1.0</querydsl.version>
        <maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
        <maven-gpg-plugin.version>3.2.8</maven-gpg-plugin.version>
        <jpa.domain.package>${project.groupId}.${project.artifactId}.domain</jpa.domain.package>
    </properties>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.cmeza</groupId>
                    <artifactId>spring-data-generator</artifactId>
                    <version>2.0.1</version>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.13</version>
                    <executions>
                        <execution>
                            <id>prepare-agent</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>report</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                            <configuration>
                                <formats>
                                    <format>XML</format>
                                </formats>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven-javadoc-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>io.fabric8</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.46.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${maven-enforcer-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>enforce-versions</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>enforce-dependencyConvergence</id>
                            <configuration>
                                <rules>
                                    <DependencyConvergence />
                                </rules>
                                <fail>false</fail>
                            </configuration>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <rules>
                            <requireMavenVersion>
                                <message>You are running an older version of Maven. Data migrator requires at least
                                    Maven ${maven.version}
                                </message>
                                <version>[${maven.version},)</version>
                            </requireMavenVersion>
                            <requireJavaVersion>
                                <message>You are running an incompatible version of Java. Data migrator supports JDK 21.
                                </message>
                                <version>[21,26)</version>
                            </requireJavaVersion>
                        </rules>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                    <configuration>
                        <!-- Force alphabetical order to have a reproducible build -->
                        <runOrder>alphabetical</runOrder>
                        <excludes>
                            <exclude>**/*IT*</exclude>
                            <exclude>**/*IntTest*</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${maven-failsafe-plugin.version}</version>
                    <configuration>
                        <runOrder>alphabetical</runOrder>
                        <includes>
                            <include>**/*IT*</include>
                            <include>**/*IntTest*</include>
                        </includes>
                    </configuration>
                    <executions>
                        <execution>
                            <id>integration-test</id>
                            <goals>
                                <goal>integration-test</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>verify</id>
                            <goals>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>${license-maven-plugin.version}</version>
                    <configuration>
                        <licenseName>apache_v2</licenseName>
                        <excludes>
                            <exclude>**/*persistence.xml</exclude>
                            <exclude>**/*.html</exclude>
                            <exclude>**/*.json</exclude>
                            <exclude>**/*.svg</exclude>
                        </excludes>
                        <extraExtensions>
                            <bnd>properties</bnd>
                        </extraExtensions>
                    </configuration>
                    <executions>
                        <execution>
                            <id>first</id>
                            <goals>
                                <goal>update-file-header</goal>
                            </goals>
                            <phase>process-sources</phase>
                        </execution>
                        <execution>
                            <id>second</id>
                            <goals>
                                <goal>update-project-license</goal>
                            </goals>
                            <phase>process-sources</phase>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <!--start with basic information to get Liquibase plugin:
                                                         include <groupId>, <artifactID>, and <version> elements-->
                    <groupId>org.liquibase</groupId>
                    <artifactId>liquibase-maven-plugin</artifactId>
                    <version>${liquibase.version}</version>
                    <configuration>
                        <!--set values for Liquibase properties and settings
                                                                         for example, the location of a properties file to use-->
                        <changeLogFile>/config/liquibase/master.xml</changeLogFile>
                        <diffChangeLogFile>
                            ${project.build.directory}/config/liquibase/changelog/${maven.build.timestamp}_diff.xml
                        </diffChangeLogFile>
                        <outputChangeLogFile>/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml
                        </outputChangeLogFile>
                        <dataDir>/config/liquibase/data</dataDir>
                        <driver>${source.database.driver}</driver>
                        <url>${source.database.url}</url>
                        <defaultSchemaName>${source.datasource.defaultSchemaName}</defaultSchemaName>
                        <username>${source.datasource.username}</username>
                        <password>${source.datasource.password}</password>
                        <!--<referenceDriver>${source.database.driver}</referenceDriver>-->
                        <!--<referenceUsername>${source.datasource.username}</referenceUsername>-->
                        <!--<referencePassword>${source.datasource.password}</referencePassword>-->
                        <referenceUrl>
                            hibernate:spring:${jpa.domain.package}?hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy&amp;hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
                        </referenceUrl>
                        <!--<referenceSchemas>${source.datasource.defaultSchemaName}</referenceSchemas>-->
                        <contexts>!test</contexts>
                        <diffTypes>tables,views,columns,indexes,primarykeys,foreignkeys,uniqueconstraints,data
                        </diffTypes>
                        <diffExcludeObjects>oauth_access_token, oauth_approvals, oauth_client_details,
                            oauth_client_token, oauth_code, oauth_refresh_token
                        </diffExcludeObjects>
                        <includeCatalog>true</includeCatalog>
                        <outputDirectory>/config/liquibase/changelog</outputDirectory>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.liquibase</groupId>
                            <artifactId>liquibase-core</artifactId>
                            <version>${liquibase.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.liquibase.ext</groupId>
                            <artifactId>liquibase-hibernate6</artifactId>
                            <version>${liquibase.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot</artifactId>
                            <version>${spring-boot.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-starter-data-jpa</artifactId>
                            <version>${spring-boot.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>com.h2database</groupId>
                            <artifactId>h2</artifactId>
                            <version>${jdbc.h2.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.hibernate.orm</groupId>
                            <artifactId>hibernate-core</artifactId>
                            <version>${hibernate.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-starter-validation</artifactId>
                            <version>${spring-boot.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-starter-tomcat</artifactId>
                            <version>${spring-boot.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.hibernate.tool</groupId>
                    <artifactId>hibernate-tools-maven</artifactId>
                    <version>${hibernate-tools.version}</version>
                    <configuration>
                        <ejb3>true</ejb3>
                        <jdk5>true</jdk5>
                        <packageName>${jpa.domain.package}</packageName>
                        <outputDirectory>${project.build.directory}/generated-sources/entities</outputDirectory>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.hibernate.orm.tooling</groupId>
                    <artifactId>hibernate-enhance-maven-plugin</artifactId>
                    <version>${hibernate-tools.version}</version>
                    <executions>
                        <execution>
                            <configuration>
                                <enableLazyInitialization>true</enableLazyInitialization>
                            </configuration>
                            <goals>
                                <goal>enhance</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>3.1.0</version>
                    <executions>
                        <execution>
                            <phase>generate-sources</phase>
                            <configuration>
                                <target>
                                    <mkdir dir="${project.build.directory}/generated-sources/repositories" />
                                    <move todir="${project.build.directory}/generated-sources/repositories">
                                        <fileset dir="${project.basedir}/src/main/java" includes="**/repository/*.java" />
                                    </move>
                                    <property name="maven.project.build.directory" value="${project.build.directory}" />
                                    <property name="maven.project.basedir" value="${project.basedir}" />
                                    <ant antfile="build.xml" target="amendEntities" />
                                </target>
                            </configuration>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.3</version>
                    <configuration>
                        <tagNameFormat>@{project.version}</tagNameFormat>
                        <goals>deploy</goals>
                    </configuration>
                    <executions>
                        <execution>
                            <id>default</id>
                            <goals>
                                <goal>perform</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!--<plugin>
                                            <groupId>org.sonatype.plugins</groupId>
                                            <artifactId>nexus-staging-maven-plugin</artifactId>
                                            <version>1.7.0</version>
                                            <extensions>true</extensions>
                                            <configuration>
                                                <serverId>ossrh</serverId>
                                                <nexusUrl>https://central.sonatype.com</nexusUrl>
                                                <autoReleaseAfterClose>${env.AUTO_RELEASE_AFTER_CLOSE}</autoReleaseAfterClose>
                                            </configuration>
                                        </plugin>-->
                <plugin>
                    <groupId>org.sonatype.central</groupId>
                    <artifactId>central-publishing-maven-plugin</artifactId>
                    <version>0.8.0</version>
                    <extensions>true</extensions>
                    <configuration>
                        <publishingServerId>ossrh</publishingServerId>
                        <tokenAuth>true</tokenAuth>
                        <autoPublish>true</autoPublish>
                        <waitUntil>published</waitUntil>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>properties-maven-plugin</artifactId>
                    <version>1.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>${maven-gpg-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>sign-artifacts</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                            <configuration>
                                <gpgArguments>
                                    <arg>--pinentry-mode</arg>
                                    <arg>loopback</arg>
                                </gpgArguments>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>${sonar-maven-plugin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>license-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>coverage</id>
            <properties>
                <sonar-maven-plugin.version>5.3.0.6276</sonar-maven-plugin.version>
                <sonar.organization>osgiliathenterprise</sonar.organization>
                <sonar.host.url>https://sonarcloud.io</sonar.host.url>
                <sonar.coverage.jacoco.xmlReportPaths>
                    ${project.basedir}/report-aggregate/target/site/jacoco-aggregate/jacoco.xml
                </sonar.coverage.jacoco.xmlReportPaths>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.sonarsource.scanner.maven</groupId>
                        <artifactId>sonar-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
            <modules>
                <module>bom</module>
                <module>modules</module>
                <module>core</module>
                <module>datamigrator-archetype</module>
                <module>sample-mono</module>
                <module>report-aggregate</module>
            </modules>
        </profile>
    </profiles>
    <organization>
        <name>Osgiliath Inc.</name>
    </organization>
    <inceptionYear>2024</inceptionYear>
</project>
