<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>tools.jackson</groupId>
    <artifactId>jackson-base</artifactId>
    <version>3.3.0</version>
  </parent>
  <groupId>tools.jackson.module</groupId>
  <artifactId>jackson-modules-base</artifactId>
  <name>Jackson modules: Base</name>
  <version>3.3.0</version>
  <packaging>pom</packaging>
  <description>Parent pom for Jackson "base" modules: modules that build directly on databind, and are
not datatype, data format, or JAX-RS provider modules.
  </description>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <modules>
    <module>afterburner</module>
    <!-- Classpath-mode integration tests for afterburner; not published. See module pom for why. -->
    <module>afterburner-tests</module>
    <module>android-record</module>
    <!-- blackbird and blackbird-tests build under the blackbird-jdk25 profile below -->
    <module>guice</module>
    <module>guice7</module>
    <module>jakarta-xmlbind</module>
    <!-- 24-Apr-2021, tatu: May not need the "old" JAXB for 3.0...
      -->
    <module>jaxb</module>
    <module>mrbean</module>
    <!-- since 2.13, do we keep for 3.0? -->
    <module>no-ctor-deser</module>

    <module>osgi</module>
<!-- 29-Jan-2018, tatu: No need for this, with Java 8
    <module>paranamer</module>
-->
    <module>spi-subtypes</module>
  </modules>

  <profiles>
    <!-- Blackbird's code generators use the ClassFile API and compile at
         release 25 (into META-INF/versions/25 of a jar whose other classes
         keep the JDK 17 floor), so the Blackbird modules build only on
         JDK 25+. -->
    <profile>
      <id>blackbird-jdk25</id>
      <activation>
        <jdk>[25,)</jdk>
      </activation>
      <modules>
        <module>blackbird</module>
        <!-- Classpath-mode integration tests for blackbird; not published. See module pom for why. -->
        <module>blackbird-tests</module>
        <!-- Module-path integration tests: a foreign named module requiring blackbird. Not published. -->
        <module>blackbird-jpms-tests</module>
      </modules>
    </profile>
    <!-- maven-release-plugin passes -Prelease (oss-parent) to both its
         preparation build and the deploy. A release on JDK < 25 would leave out the Blackbird modules without an error, so it fails instead. -->
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce-jdk25-for-release</id>
                <phase>validate</phase>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireJavaVersion>
                      <version>[25,)</version>
                      <message>Release builds need JDK 25 or later: on older JDKs the reactor leaves out jackson-module-blackbird.</message>
                    </requireJavaVersion>
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <url>https://github.com/FasterXML/jackson-modules-base</url>
  <scm>
    <connection>scm:git:git@github.com:FasterXML/jackson-modules-base.git</connection>
    <developerConnection>scm:git:git@github.com:FasterXML/jackson-modules-base.git</developerConnection>
    <url>https://github.com/FasterXML/jackson-modules-base</url>
    <tag>jackson-modules-base-3.3.0</tag>
  </scm>
  <issueManagement>
    <url>https://github.com/FasterXML/jackson-modules-base/issues</url>
  </issueManagement>

  <properties>
    <!-- The parent chain sets compiler source/target only; release pins the
         17 floor against JDK 17 APIs (ct.sym) even when the build JDK is
         newer. blackbird compiles only its two code generators at 25. -->
    <maven.compiler.release>17</maven.compiler.release>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- [databind#4820]: Java 17 baseline -->
    <javac.src.version>17</javac.src.version>
    <javac.target.version>17</javac.target.version>

    <!-- 17-Oct-2017, tatu: MrBean and Afterburner will use Byte Buddy instead of raw ASM
          starting with 3.0
      -->
    <version.bytebuddy>1.18.15</version.bytebuddy>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>${version.bytebuddy}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!-- 11-Jan-2025, joohyukkim: For JSTEP-10, migrate to JUnit5 -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- For validating more complex comparisons -->
    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-core</artifactId>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <!-- Alas, need to include snapshot reference since otherwise can not find
       snapshot of parent... -->
  <repositories>
    <!-- 13-May-2025, tatu: and now moving to Central Portal -->
    <repository>
      <id>central-snapshots</id>
      <name>Sonatype Central Portal (snapshots)</name>
      <url>https://central.sonatype.com/repository/maven-snapshots</url>
      <releases><enabled>false</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
    </repository>
  </repositories>

  <build>
    <pluginManagement>
      <plugins>
	<plugin>
	  <!-- Inherited from oss-base. Generate PackageVersion.java.-->
          <groupId>com.google.code.maven-replacer-plugin</groupId>
          <artifactId>replacer</artifactId>
	  <executions>
            <execution>
              <id>process-packageVersion</id>
              <phase>generate-sources</phase>
            </execution>
          </executions>
	</plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>
