<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>dev.aydin.enterprise</groupId>
  <artifactId>modern-enterprise-master-2</artifactId>
  <version>2.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Modern Enterprise Maven Master 2</name>
  <description>Deep-Dive Maven multi-module reference workspace with explicit design pattern markers.</description>

  <modules>
    <module>platform-bom</module>
    <module>shared-kernel</module>
    <module>order-domain</module>
    <module>customer-domain</module>
    <module>inventory-domain</module>
    <module>pricing-domain</module>
    <module>payment-domain</module>
    <module>fulfillment-domain</module>
    <module>notification-domain</module>
    <module>order-application</module>
    <module>integration-outbox</module>
    <module>adapters-rest-spring</module>
    <module>adapters-persistence-jpa</module>
    <module>adapters-messaging-kafka</module>
    <module>adapters-legacy-acl</module>
    <module>app-spring-boot</module>
    <module>app-quarkus</module>
    <module>architecture-tests</module>    <module>runnable-smoke</module>
</modules>

  <properties>
    <java.version>21</java.version>
    <maven.compiler.release>${java.version}</maven.compiler.release>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.boot.version>4.1.0</spring.boot.version>
    <quarkus.platform.version>3.37.1</quarkus.platform.version>
    <jakarta.ee.version>11.0.0</jakarta.ee.version>
    <junit.jupiter.version>5.13.4</junit.jupiter.version>
    <archunit.version>1.4.1</archunit.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.quarkus.platform</groupId>
        <artifactId>quarkus-bom</artifactId>
        <version>${quarkus.platform.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.15.0</version>
          <configuration><release>${java.version}</release><parameters>true</parameters></configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.5.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>3.5.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.6.3</version>
          <executions>
            <execution>
              <id>enforce-java-maven</id>
              <goals><goal>enforce</goal></goals>
              <configuration>
                <rules>
                  <requireJavaVersion><version>[21,)</version></requireJavaVersion>
                  <requireMavenVersion><version>[3.9,)</version></requireMavenVersion>
                  <banDuplicatePomDependencyVersions />
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.11.0</version>
        </plugin>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>${spring.boot.version}</version>
        </plugin>
        <plugin>
          <groupId>io.quarkus.platform</groupId>
          <artifactId>quarkus-maven-plugin</artifactId>
          <version>${quarkus.platform.version}</version>
          <extensions>true</extensions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
