<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         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.kie.kogito.examples</groupId>
    <artifactId>kogito-examples</artifactId>
    <version>1.20.0.Final</version>
  </parent>

  <artifactId>kogito-quarkus-examples</artifactId>
  <packaging>pom</packaging>
  <name>Kogito Example :: Quarkus</name>

  <properties>
    <!-- Port 0 means dynamic port -->
    <tests.quarkus.http.port>0</tests.quarkus.http.port>
    <!-- override default to fast-jar packaging for forward-compatibility -->
    <quarkus.package.type>fast-jar</quarkus.package.type>
    <!-- quarkus platform related properties -->
    <quarkus-plugin.version>2.7.3.Final</quarkus-plugin.version>
    <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
    <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
    <quarkus.platform.version>2.7.3.Final</quarkus.platform.version>
    <kogito.bom.group-id>org.kie.kogito</kogito.bom.group-id>
    <kogito.bom.artifact-id>kogito-bom</kogito.bom.artifact-id>
    <kogito.bom.version>${project.version}</kogito.bom.version>
  </properties>

  <profiles>
    <profile>
      <id>default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <modules>
        <module>decisiontable-quarkus-example</module>
        <module>dmn-drools-quarkus-metrics</module>
        <module>dmn-event-driven-quarkus</module>
        <module>dmn-incubation-api-quarkus</module>
        <module>dmn-knative-quickstart-quarkus</module>
        <module>dmn-listener-quarkus</module>
        <module>dmn-pmml-quarkus-example</module>
        <module>dmn-quarkus-example</module>
        <module>dmn-tracing-quarkus</module>
        <module>flexible-process-quarkus</module>
        <module>kogito-travel-agency</module>
        <module>onboarding-example</module>
        <module>pmml-event-driven-quarkus</module>
        <module>pmml-incubation-api-quarkus</module>
        <module>pmml-quarkus-example</module>
        <module>process-business-rules-quarkus</module>
        <module>process-decisions-quarkus</module>
        <module>process-decisions-rest-quarkus</module>
        <module>process-error-handling</module>
        <module>process-incubation-api-quarkus</module>
        <module>process-infinispan-persistence-quarkus</module>
        <module>process-kafka-avro-multi-quarkus</module>
        <module>process-kafka-multi-quarkus</module>
        <module>process-kafka-persistence-quarkus</module>
        <module>process-kafka-quickstart-quarkus</module>
        <module>process-knative-quickstart-quarkus</module>
        <module>process-mongodb-persistence-quarkus</module>
        <module>process-monitoring-quarkus</module>
        <module>process-optaplanner-quarkus</module>
        <module>process-outbox-mongodb-quarkus</module>
        <module>process-performance-client</module>
        <module>process-performance-quarkus</module>
        <module>process-postgresql-persistence-quarkus</module>
        <module>process-quarkus-example</module>
        <module>process-rest-service-call-quarkus</module>
        <module>process-rest-workitem-multi-quarkus</module>
        <module>process-rest-workitem-quarkus</module>
        <module>process-scripts-quarkus</module>
        <module>process-saga-quarkus</module>
        <module>process-service-calls-quarkus</module>
        <module>process-timer-quarkus</module>
        <module>process-usertasks-custom-lifecycle-quarkus</module>
        <module>process-usertasks-quarkus-with-console</module>
        <module>process-usertasks-quarkus</module>
        <module>process-usertasks-timer-quarkus-with-console</module>
        <module>process-usertasks-with-security-oidc-quarkus-with-console</module>
        <module>process-usertasks-with-security-oidc-quarkus</module>
        <module>process-usertasks-with-security-quarkus</module>
        <module>rules-incubation-api-quarkus</module>
        <module>rules-legacy-quarkus-example</module>
        <module>rules-quarkus-helloworld</module>
        <module>ruleunit-event-driven-quarkus</module>
        <module>ruleunit-quarkus-example</module>
        <module>serverless-workflow-annotations-description</module>
        <module>serverless-workflow-callback-quarkus</module>
        <module>serverless-workflow-compensation-quarkus</module>
        <module>serverless-workflow-consuming-events-over-http-quarkus</module>
        <module>serverless-workflow-error-quarkus</module>
        <module>serverless-workflow-events-quarkus</module>
        <module>serverless-workflow-expression-quarkus</module>
        <module>serverless-workflow-foreach-quarkus</module>
        <module>serverless-workflow-functions-events-quarkus</module>
        <module>serverless-workflow-functions-quarkus</module>
        <module>serverless-workflow-funqy</module>
        <module>serverless-workflow-github-showcase</module>
        <module>serverless-workflow-greeting-quarkus</module>
        <module>serverless-workflow-order-processing</module>
        <module>serverless-workflow-saga-quarkus</module>
        <module>serverless-workflow-service-calls-quarkus</module>
        <module>serverless-workflow-temperature-conversion</module>
        <module>serverless-workflow-qas-service-showcase</module>
        <module>trusty-tracing-quarkus-devservices</module>
      </modules>
    </profile>

    <profile>
      <id>persistence</id>
      <activation>
        <property>
          <name>persistence</name>
        </property>
      </activation>
      <properties>
        <tests.category>persistence</tests.category>
      </properties>
      <modules>
        <module>onboarding-example</module>
        <module>process-postgresql-persistence-quarkus</module>
        <module>process-quarkus-example</module>
        <module>serverless-workflow-callback-quarkus</module>
        <module>serverless-workflow-qas-service-showcase</module>
      </modules>
    </profile>

    <profile>
      <id>jdbc-persistence</id>
      <activation>
        <property>
          <name>jdbc-persistence</name>
        </property>
      </activation>

      <modules>
        <module>process-postgresql-persistence-quarkus</module>
      </modules>
    </profile>

    <profile>
      <id>events</id>
      <activation>
        <property>
          <name>events</name>
        </property>
      </activation>
      <modules>
        <module>process-quarkus-example</module>
      </modules>
    </profile>

    <profile>
      <id>native</id>
      <properties>
        <failsafe.include>**/Native*IT.java</failsafe.include>
        <failsafe.exclude></failsafe.exclude>
        <quarkus.package.type>native</quarkus.package.type>
        <!-- Native building needs a fixed port for tests -->
        <tests.quarkus.http.port>8080</tests.quarkus.http.port>
      </properties>
      <activation>
        <property>
          <name>native</name>
        </property>
      </activation>
      <modules>
        <module>decisiontable-quarkus-example</module>
        <module>dmn-drools-quarkus-metrics</module>
        <module>dmn-event-driven-quarkus</module>
        <module>dmn-knative-quickstart-quarkus</module>
        <module>dmn-listener-quarkus</module>
        <module>dmn-pmml-quarkus-example</module>
        <module>dmn-quarkus-example</module>
        <module>dmn-tracing-quarkus</module>
        <module>flexible-process-quarkus</module>
        <module>kogito-travel-agency</module>
        <module>onboarding-example</module>
        <module>pmml-event-driven-quarkus</module>
        <module>pmml-quarkus-example</module>
        <module>process-business-rules-quarkus</module>
        <module>process-infinispan-persistence-quarkus</module>
        <module>process-kafka-persistence-quarkus</module>
        <module>process-kafka-quickstart-quarkus</module>
        <module>process-knative-quickstart-quarkus</module>
        <module>process-mongodb-persistence-quarkus</module>
        <module>process-monitoring-quarkus</module>
        <module>process-optaplanner-quarkus</module>
        <module>process-outbox-mongodb-quarkus</module>
        <module>process-postgresql-persistence-quarkus</module>
        <module>process-quarkus-example</module>
        <module>process-rest-service-call-quarkus</module>
        <module>process-rest-workitem-multi-quarkus</module>
        <module>process-rest-workitem-quarkus</module>
        <module>process-scripts-quarkus</module>
        <module>process-service-calls-quarkus</module>
        <module>process-timer-quarkus</module>
        <module>process-usertasks-custom-lifecycle-quarkus</module>
        <module>process-usertasks-quarkus-with-console</module>
        <module>process-usertasks-quarkus</module>
        <module>process-usertasks-timer-quarkus-with-console</module>
        <module>process-usertasks-with-security-oidc-quarkus-with-console</module>
        <module>process-usertasks-with-security-oidc-quarkus</module>
        <module>process-usertasks-with-security-quarkus</module>
        <module>rules-quarkus-helloworld</module>
        <module>ruleunit-event-driven-quarkus</module>
        <module>ruleunit-quarkus-example</module>
        <module>serverless-workflow-callback-quarkus</module>
        <module>serverless-workflow-compensation-quarkus</module>
        <module>serverless-workflow-error-quarkus</module>
        <module>serverless-workflow-events-quarkus</module>
        <module>serverless-workflow-expression-quarkus</module>
        <module>serverless-workflow-functions-events-quarkus</module>
        <module>serverless-workflow-functions-quarkus</module>
        <module>serverless-workflow-funqy</module>
        <module>serverless-workflow-greeting-quarkus</module>
        <module>serverless-workflow-service-calls-quarkus</module>
        <module>serverless-workflow-temperature-conversion</module>
      </modules>
    </profile>

    <profile>
      <id>productized</id>
      <activation>
        <property>
          <name>productized</name>
        </property>
      </activation>
      <modules>
        <module>dmn-drools-quarkus-metrics</module>
        <module>dmn-event-driven-quarkus</module>
        <module>dmn-listener-quarkus</module>
        <module>dmn-pmml-quarkus-example</module>
        <module>dmn-quarkus-example</module>
        <module>pmml-event-driven-quarkus</module>
        <module>pmml-quarkus-example</module>
        <module>rules-legacy-quarkus-example</module>
        <module>rules-quarkus-helloworld</module>
        <module>ruleunit-event-driven-quarkus</module>
        <module>ruleunit-quarkus-example</module>
      </modules>
    </profile>

    <profile>
      <id>optaplanner-downstream</id>
      <activation>
        <property>
          <name>optaplanner</name>
        </property>
      </activation>
      <modules>
        <module>process-optaplanner-quarkus</module>
      </modules>
    </profile>

    <profile>
      <id>optaplanner-downstream-native</id>
      <activation>
        <property>
          <name>optaplanner-native</name>
        </property>
      </activation>
      <properties>
        <failsafe.include>**/Native*IT.java</failsafe.include>
        <failsafe.exclude></failsafe.exclude>
        <quarkus.package.type>native</quarkus.package.type>
        <!-- Native building needs a fixed port for tests -->
        <tests.quarkus.http.port>8080</tests.quarkus.http.port>
      </properties>
      <modules>
        <module>process-optaplanner-quarkus</module>
      </modules>
    </profile>
           
    <profile>
      <id>kogito-apps-downstream</id>
      <activation>
        <property>
          <name>kogito-apps</name>
        </property>
      </activation>
      <modules>
        <module>trusty-tracing-quarkus-devservices</module>
      </modules>
    </profile>

    <profile>
      <id>kogito-apps-downstream-native</id>
      <activation>
        <property>
          <name>kogito-apps-native</name>
        </property>
      </activation>
      <properties>
        <failsafe.include>**/Native*IT.java</failsafe.include>
        <failsafe.exclude></failsafe.exclude>
        <quarkus.package.type>native</quarkus.package.type>
        <!-- Native building needs a fixed port for tests -->
        <tests.quarkus.http.port>8080</tests.quarkus.http.port>
      </properties>
      <!-- To update once there are kogito-apps needed modules in native -->
      <!-- modules>
        <module>process-optaplanner-quarkus</module>
      </modules -->
    </profile>
  </profiles>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>${quarkus.platform.group-id}</groupId>
          <artifactId>quarkus-maven-plugin</artifactId>
          <version>${quarkus-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${version.surefire.plugin}</version>
          <configuration>
            <systemPropertyVariables>
              <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${version.surefire.plugin}</version>
          <configuration>
            <systemPropertyVariables>
              <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
              <quarkus.http.test-port>${tests.quarkus.http.port}</quarkus.http.test-port>
            </systemPropertyVariables>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>
