<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>ch.vorburger.mariaDB4j</groupId>
    <artifactId>mariaDB4j-pom-lite</artifactId>
    <!-- Do NOT depend on a SNAPSHOT here!
             Note that this parent version and the version below are, intentionally, completely unrelated. -->
    <version>2.2.2</version>
    <relativePath>mariaDB4j-pom-lite/pom.xml</relativePath>
  </parent>

  <artifactId>mariaDB4j-pom</artifactId>
  <version>3.1.0</version>
  <packaging>pom</packaging>

  <scm>
    <!-- The <connection> and <url> are specified in the <parent> but the
             <developerConnection> and the <tag> must be here, for the maven-release-plugin
             to work correctly, if the <parent> is not a SNAPSHOT;
             see https://github.com/vorburger/MariaDB4j/issues/43.
         -->
    <developerConnection>scm:git:git@github.com:vorburger/MariaDB4j.git</developerConnection>
    <tag>mariaDB4j-3.1.0</tag>
  </scm>

  <modules>
    <!-- We do NOT include <module> for the mariaDB4j-pom-lite, nor the DBs/mariaDB4j-db-* here!

             This is because those are NOT version'd the same way as this artifact and the ones below.
             Therefore the mvn release:* and mvn depoy is done separately for this (below)
             and the mariaDB4j-pom-lite and DBs/mariaDB4j-db-*.
         -->
    <module>mariaDB4j-core</module>
    <module>mariaDB4j</module>
    <module>mariaDB4j-app</module>
    <module>mariaDB4j-springboot</module>
    <module>mariaDB4j-maven-plugin</module>
  </modules>

  <properties>
    <!-- https://maven.apache.org/guides/mini/guide-reproducible-builds.html -->
    <project.build.outputTimestamp>2024-03-27T22:37:40Z</project.build.outputTimestamp>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <springboot.version>3.2.4</springboot.version>
    <jakarta.annotation-api.version>2.1.1</jakarta.annotation-api.version>
    <errorprone.version>2.26.1</errorprone.version>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.13.0</version>
        <configuration>
          <release>17</release>
          <encoding>UTF-8</encoding>
          <compilerArgs>
            <arg>-Werror</arg>
            <arg>-Xlint:all</arg>
            <arg>-XDcompilePolicy=simple</arg>
            <arg>-Xplugin:ErrorProne -XepDisableWarningsInGeneratedCode
              -XepExcludedPaths:.*/target/generated-sources/.*</arg>
          </compilerArgs>
          <annotationProcessorPaths>
            <path>
              <groupId>com.google.errorprone</groupId>
              <artifactId>error_prone_core</artifactId>
              <version>${errorprone.version}</version>
            </path>
            <!-- Other annotation processors go here.
                 If 'annotationProcessorPaths' is set, processors will no longer be
                 discovered on the regular -classpath; see also 'Using Error Prone
                 together with other annotation processors' below. -->
          </annotationProcessorPaths>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.6.3</version>
        <configuration>
          <quiet>true</quiet>
        </configuration>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
          <useReleaseProfile>false</useReleaseProfile>
          <releaseProfiles>release</releaseProfiles>
          <autoVersionSubmodules>true</autoVersionSubmodules>
          <!--https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
						http://jira.codehaus.org/browse/MGPG-9 & http://jira.codehaus.org/browse/MRELEASE-263 -->
          <mavenExecutorId>forked-path</mavenExecutorId>
          <!-- Following is required because artifactId is (now) mariaDB4j-pom, but we
					want mariaDB4j -->
          <tagNameFormat>mariaDB4j-@{project.version}</tagNameFormat>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <version>2.4.0</version>
        <configuration>
          <licenseName>apache_v2</licenseName>
          <addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage>
          <failOnMissingHeader>true</failOnMissingHeader>
          <failOnNotUptodateHeader>true</failOnNotUptodateHeader>
          <roots>
            <root>src/main/java</root>
            <root>src/test/java</root>
          </roots>
        </configuration>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>check-file-header</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.3.1</version>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>10.14.2</version>
          </dependency>
        </dependencies>
        <configuration>
          <configLocation>checkstyle.xml</configLocation>
          <!-- https://github.com/vorburger/MariaDB4j/issues/511 -->
          <sourceDirectories>${project.build.sourceDirectory}</sourceDirectories>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <consoleOutput>true</consoleOutput>
          <failsOnError>true</failsOnError>
        </configuration>
        <executions>
          <execution>
            <id>validate</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${springboot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.12</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.15.1</version>
      </dependency>
      <dependency>
        <groupId>commons-dbutils</groupId>
        <artifactId>commons-dbutils</artifactId>
        <version>1.8.1</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>${jakarta.annotation-api.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.errorprone</groupId>
        <artifactId>error_prone_annotations</artifactId>
        <version>${errorprone.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>
