<?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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>io.automatiko</groupId>
  <artifactId>automatiko-engine</artifactId>
  <version>0.2.0</version>
  <packaging>pom</packaging>

  <name>Automatiko Engine</name>
  <description>Automatiko :: Engine</description>

  <url>https://automatiko.io</url>
  <inceptionYear>2020</inceptionYear>
  <organization>
    <name>OpenEnterprise</name>
    <url>https://automatiko.io</url>
  </organization>
  <licenses>
    <license>
      <name>Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <properties>
    <version.jdk>11</version.jdk>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <automatiko.version>${project.version}</automatiko.version>

    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>

    <project.root.dir>${maven.multiModuleProjectDirectory}</project.root.dir>
    <tests.surefire.include>**/*Test.java</tests.surefire.include>
    <tests.failsafe.include>**/*IT.java</tests.failsafe.include>

    <!-- plugin versions -->
    <version.antapacheregexp>1.8.2</version.antapacheregexp>
    <version.antrun.plugin>1.8</version.antrun.plugin>
    <version.asciidoctor.plugin>1.5.2.1</version.asciidoctor.plugin>
    <version.build.helper.plugin>3.0.0</version.build.helper.plugin>
    <version.ch.qos.logback>1.1.3</version.ch.qos.logback>
    <version.clean.plugin>3.1.0</version.clean.plugin>
    <version.compiler.plugin>3.8.1</version.compiler.plugin>
    <version.copyrename.plugin>1.0</version.copyrename.plugin>
    <version.dependency.plugin>2.8</version.dependency.plugin>
    <version.deploy.plugin>2.8.2</version.deploy.plugin>
    <version.exec.plugin>1.6.0</version.exec.plugin>
    <version.findbugs.plugin>3.0.5</version.findbugs.plugin>
    <version.install.plugin>2.5.2</version.install.plugin>
    <version.invoker.plugin>2.0.0</version.invoker.plugin>
    <version.jandex.plugin>1.0.6</version.jandex.plugin>
    <version.jar.plugin>3.1.0</version.jar.plugin>
    <version.javadoc.plugin>3.0.1</version.javadoc.plugin>
    <version.archetype.plugin>3.0.1</version.archetype.plugin>
    <version.enforcer.plugin>3.0.0-M2</version.enforcer.plugin>
    <version.maven>3.6.2</version.maven>
    <version.maven.plugin>3.4</version.maven.plugin>
    <version.native2ascii.plugin>1.0-beta-1</version.native2ascii.plugin>
    <version.plexus>1.6</version.plexus>
    <version.plexus.classworld>2.5.2</version.plexus.classworld>
    <version.plugin.plugin>3.6.0</version.plugin.plugin>
    <version.project.sources.plugin>0.3</version.project.sources.plugin>
    <version.resources.plugin>3.1.0</version.resources.plugin>
    <version.site.plugin>3.7.1</version.site.plugin>
    <version.shade.plugin>3.0.0</version.shade.plugin>
    <version.source.plugin>3.0.1</version.source.plugin>
    <version.surefire.plugin>2.22.1</version.surefire.plugin> <!-- minimum required by JUnit 5 -->
    <version.surefire.report.plugin>2.6</version.surefire.report.plugin>
    <version.swagger.plugin>2.1.0</version.swagger.plugin>
    <version.taglist.plugin>2.4</version.taglist.plugin>
    <version.versions.plugin>2.1</version.versions.plugin>
    <version.jayway.jsonpath>2.4.0</version.jayway.jsonpath>

    <!-- dependencies versions -->
    <version.ch.obermuhlner>2.0.1</version.ch.obermuhlner>
    <version.com.fasterxml.jackson>2.10.3</version.com.fasterxml.jackson>
    <version.com.github.haifengl.smile>1.5.2</version.com.github.haifengl.smile>
    <version.com.github.javaparser>3.13.10</version.com.github.javaparser>
    <version.com.github.victools>4.12.1</version.com.github.victools>
    <version.com.google.protobuf>3.12.2</version.com.google.protobuf>
    <version.org.graalvm.nativeimage>20.1.0</version.org.graalvm.nativeimage>
    <version.com.sun.xml.bind>2.3.0</version.com.sun.xml.bind>
    <version.com.thoughtworks.xstream>1.4.11.1</version.com.thoughtworks.xstream>


    <version.javassist>3.20.0-GA</version.javassist>
    <version.javax.activation>1.2.0</version.javax.activation>
    <version.javax.annotation-api>1.3.2</version.javax.annotation-api>
    <version.javax.inject>1</version.javax.inject>
    <version.jakarta.enterprise.cdi>2.0.2</version.jakarta.enterprise.cdi>
    <version.javax.json>1.1.4</version.javax.json>
    <version.javax.json.bind>1.0</version.javax.json.bind>
    <version.javax.xml.bind>2.3.0</version.javax.xml.bind>
    <version.javax.validation>2.0.1.Final</version.javax.validation>
    <version.json-unit-assertj>2.9.0</version.json-unit-assertj>

    <version.net.java.dev.glazedlists>1.8.0</version.net.java.dev.glazedlists>

    <version.io.cloudevents>1.3.0</version.io.cloudevents>
    <version.io.prometheus>0.5.0</version.io.prometheus>
    <version.io.quarkus>1.12.0.CR1</version.io.quarkus>
    <version.io.restassured>4.3.0</version.io.restassured>
    <version.io.smallrye.reactive>2.8.0</version.io.smallrye.reactive>
    <version.org.eclipse.microprofile.metrics>2.3</version.org.eclipse.microprofile.metrics>
    <version.org.eclipse.microprofile.rest.client>1.4.1</version.org.eclipse.microprofile.rest.client>
    <version.org.eclipse.microprofile.config>1.4</version.org.eclipse.microprofile.config>
    <version.org.eclipse.microprofile.openapi>1.1.2</version.org.eclipse.microprofile.openapi>

    <version.org.antlr>3.5.2</version.org.antlr>
    <version.org.antlr4>4.8</version.org.antlr4>
    <version.org.assertj>3.16.1</version.org.assertj>
    <version.org.eclipse.jdt>3.19.0</version.org.eclipse.jdt>
    <version.org.hamcrest>1.3</version.org.hamcrest> <!-- else old version coming from Mockito wins and breaks tests -->
    <version.org.infinispan>10.1.5.Final</version.org.infinispan>
    <version.org.infinispan.image>10.1.5.Final</version.org.infinispan.image>
    <version.org.infinispan.protostream>4.3.2.Final</version.org.infinispan.protostream>
    <version.org.jboss.spec.javax.ws.rs.jboss-jaxrs-api_2.1_spec>1.0.1.Final</version.org.jboss.spec.javax.ws.rs.jboss-jaxrs-api_2.1_spec>
    <version.org.jboss.resteasy.spi.test>4.5.1.Final</version.org.jboss.resteasy.spi.test> <!-- align codegen test to target platforms, which use Resteasy -->
    <version.org.junit.minor>6.2</version.org.junit.minor> <!-- so that org.junit.platform and org.junit can share the same minor version -->
    <version.org.junit>5.${version.org.junit.minor}</version.org.junit>
    <version.org.junit.jupiter>${version.org.junit}</version.org.junit.jupiter>
    <version.org.junit.vintage>${version.org.junit}</version.org.junit.vintage>
    <version.org.junit.platform>1.${version.org.junit.minor}</version.org.junit.platform> <!-- otherwise Quarkus brings its own, silently disabling some tests -->
    <version.org.mockito>3.3.3</version.org.mockito>
    <version.org.mvel>2.4.7.Final</version.org.mvel>
    <version.org.kie-dmn>7.41.0.Final</version.org.kie-dmn>
    <version.org.reflections>0.9.11</version.org.reflections>
    <version.org.slf4j>1.7.30</version.org.slf4j>
    <version.testcontainers>1.14.3</version.testcontainers>
    <version.xmlunit>2.2.1</version.xmlunit>
    <version.org.openapitools>4.3.1</version.org.openapitools>

    <!-- SW -->
    <verion.io.serverlessworkflow>1.0.2.Final</verion.io.serverlessworkflow>

    <!-- container images for testing -->
    <container.image.infinispan>quay.io/infinispan/server:${version.org.infinispan.image}</container.image.infinispan>
  </properties>

  <scm>
    <connection>scm:git:git://github.com/automatiko-io/automatiko-engine.git</connection>
    <developerConnection>scm:git:ssh://github.com:automatiko-io/automatiko-engine.git</developerConnection>
    <url>https://github.com/automatiko-io/automatiko-engine</url>
  </scm>

  <developers>
    <developer>
      <name>All developers are listed on the team website</name>
      <url>https://automatiko.io/community/team.html</url>
    </developer>
  </developers>

  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-api</artifactId>
        <version>${version.org.kie-dmn}</version>
      </dependency>
      <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-internal</artifactId>
        <version>${version.org.kie-dmn}</version>
      </dependency>
      <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-dmn-api</artifactId>
        <version>${version.org.kie-dmn}</version>
      </dependency>
      <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-dmn-core</artifactId>
        <version>${version.org.kie-dmn}</version>
      </dependency>

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${version.org.slf4j}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${version.org.slf4j}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-nop</artifactId>
        <version>${version.org.slf4j}</version>
      </dependency>

      <dependency>
        <groupId>org.mvel</groupId>
        <artifactId>mvel2</artifactId>
        <version>${version.org.mvel}</version>
      </dependency>

      <dependency>
        <groupId>org.kie.soup</groupId>
        <artifactId>kie-soup-xstream</artifactId>
        <version>${version.org.kie-dmn}</version>
      </dependency>
      <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
        <version>${version.com.thoughtworks.xstream}</version>
      </dependency>

      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${version.com.google.protobuf}</version>
      </dependency>

      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr</artifactId>
        <version>${version.org.antlr}</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr-runtime</artifactId>
        <version>${version.org.antlr}</version>
      </dependency>

      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4</artifactId>
        <version>${version.org.antlr4}</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-runtime</artifactId>
        <version>${version.org.antlr4}</version>
      </dependency>

      <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>${version.javassist}</version>
      </dependency>

      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${version.ch.qos.logback}</version>
      </dependency>

      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${version.ch.qos.logback}</version>
      </dependency>

      <!-- used by DMN for BigDecimal arithmetics -->
      <dependency>
        <groupId>ch.obermuhlner</groupId>
        <artifactId>big-math</artifactId>
        <version>${version.ch.obermuhlner}</version>
      </dependency>

      <!-- code generation -->
      <dependency>
        <groupId>com.github.javaparser</groupId>
        <artifactId>javaparser-core</artifactId>
        <version>${version.com.github.javaparser}</version>
      </dependency>

      <!-- marshalling -->
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>${version.jayway.jsonpath}</version>
      </dependency>
      <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path-assert</artifactId>
        <version>${version.jayway.jsonpath}</version>
      </dependency>

      <!-- open api client generator -->
      <dependency>
        <groupId>org.openapitools</groupId>
        <artifactId>openapi-generator</artifactId>
        <version>${version.org.openapitools}</version>
      </dependency>

      <!-- metrics - prometheus -->
      <dependency>
        <groupId>io.prometheus</groupId>
        <artifactId>simpleclient</artifactId>
        <version>${version.io.prometheus}</version>
      </dependency>
      <dependency>
        <groupId>io.prometheus</groupId>
        <artifactId>simpleclient_common</artifactId>
        <version>${version.io.prometheus}</version>
      </dependency>

      <dependency>
        <groupId>org.jboss.spec.javax.ws.rs</groupId>
        <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
        <version>${version.org.jboss.spec.javax.ws.rs.jboss-jaxrs-api_2.1_spec}</version>
      </dependency>

      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${version.org.junit.jupiter}</version>
        <scope>test</scope>
      </dependency>

      <dependency> <!-- TODO move this dep into surefire-plugin when all modules are migrated 
          to JUnit 5 -->
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${version.org.junit.jupiter}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>${version.org.junit.jupiter}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-engine</artifactId>
        <version>${version.org.junit.platform}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-commons</artifactId>
        <version>${version.org.junit.platform}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${version.org.junit.vintage}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>${version.org.assertj}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${version.org.mockito}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${version.org.mockito}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>${version.org.hamcrest}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>${version.org.hamcrest}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.xmlunit</groupId>
        <artifactId>xmlunit-core</artifactId>
        <version>${version.xmlunit}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>net.javacrumbs.json-unit</groupId>
        <artifactId>json-unit-assertj</artifactId>
        <version>${version.json-unit-assertj}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>testcontainers</artifactId>
        <version>${version.testcontainers}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>kafka</artifactId>
        <version>${version.testcontainers}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>${version.testcontainers}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>mongodb</artifactId>
        <version>${version.testcontainers}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-artifact</artifactId>
        <version>${version.maven}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>${version.maven}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-core</artifactId>
        <version>${version.maven}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>${version.maven.plugin}</version>
      </dependency>

      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-component-annotations</artifactId>
        <version>${version.plexus}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-container-default</artifactId>
        <version>${version.plexus}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-classworlds</artifactId>
        <version>${version.plexus.classworld}</version>
      </dependency>

      <dependency>
        <groupId>javax.json.bind</groupId>
        <artifactId>javax.json.bind-api</artifactId>
        <version>${version.javax.json.bind}</version>
      </dependency>
      <dependency>
        <groupId>javax.json</groupId>
        <artifactId>javax.json-api</artifactId>
        <version>${version.javax.json}</version>
      </dependency>

      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>${version.javax.xml.bind}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>${version.com.sun.xml.bind}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>${version.com.sun.xml.bind}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.activation</groupId>
        <artifactId>javax.activation</artifactId>
        <version>${version.javax.activation}</version>
      </dependency>
      <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>${version.javax.validation}</version>
      </dependency>

      <dependency>
        <groupId>org.graalvm.nativeimage</groupId>
        <artifactId>svm</artifactId>
        <version>${version.org.graalvm.nativeimage}</version>
      </dependency>

      <dependency>
        <groupId>io.smallrye.reactive</groupId>
        <artifactId>smallrye-reactive-messaging-provider</artifactId>
        <version>${version.io.smallrye.reactive}</version>
      </dependency>

      <dependency>
        <groupId>org.eclipse.microprofile.metrics</groupId>
        <artifactId>microprofile-metrics-api</artifactId>
        <version>${version.org.eclipse.microprofile.metrics}</version>
      </dependency>

      <dependency>
        <groupId>org.eclipse.microprofile.rest.client</groupId>
        <artifactId>microprofile-rest-client-api</artifactId>
        <version>${version.org.eclipse.microprofile.rest.client}</version>
      </dependency>

      <dependency>
        <groupId>org.eclipse.microprofile.config</groupId>
        <artifactId>microprofile-config-api</artifactId>
        <version>${version.org.eclipse.microprofile.config}</version>
      </dependency>

      <dependency>
        <groupId>org.eclipse.microprofile.openapi</groupId>
        <artifactId>microprofile-openapi-api</artifactId>
        <version>${version.org.eclipse.microprofile.openapi}</version>
      </dependency>

      <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>${version.javax.inject}</version>
      </dependency>
      <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>${version.javax.annotation-api}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.enterprise</groupId>
        <artifactId>jakarta.enterprise.cdi-api</artifactId>
        <version>${version.jakarta.enterprise.cdi}</version>
      </dependency>

      <!-- infinispan -->
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-client-hotrod</artifactId>
        <version>${version.org.infinispan}</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan.protostream</groupId>
        <artifactId>protostream</artifactId>
        <version>${version.org.infinispan.protostream}</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-server-hotrod</artifactId>
        <version>${version.org.infinispan}</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-remote-query-server</artifactId>
        <version>${version.org.infinispan}</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-query</artifactId>
        <version>${version.org.infinispan}</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-core</artifactId>
        <version>${version.org.infinispan}</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-query-dsl</artifactId>
        <version>${version.org.infinispan}</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-remote-query-client</artifactId>
        <version>${version.org.infinispan}</version>
      </dependency>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-commons</artifactId>
        <version>${version.org.infinispan}</version>
      </dependency>

      <!-- predictions/machine learning related -->
      <dependency>
        <groupId>com.github.haifengl</groupId>
        <artifactId>smile-core</artifactId>
        <version>${version.com.github.haifengl.smile}</version>
      </dependency>

      <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>${version.io.restassured}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.reflections</groupId>
        <artifactId>reflections</artifactId>
        <version>${version.org.reflections}</version>
      </dependency>

      <!-- CloudEvents -->
      <dependency>
        <groupId>io.cloudevents</groupId>
        <artifactId>cloudevents-api</artifactId>
        <version>${version.io.cloudevents}</version>
      </dependency>

      <dependency>
        <groupId>com.github.victools</groupId>
        <artifactId>jsonschema-generator</artifactId>
        <version>${version.com.github.victools}</version>
      </dependency>

      <!-- Serverless Workflow -->
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-api</artifactId>
        <version>${verion.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-spi</artifactId>
        <version>${verion.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-validation</artifactId>
        <version>${verion.io.serverlessworkflow}</version>
      </dependency>
      <dependency>
        <groupId>io.serverlessworkflow</groupId>
        <artifactId>serverlessworkflow-diagram</artifactId>
        <version>${verion.io.serverlessworkflow}</version>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>2.0.0</version>
          <configuration>
            <!-- TODO this is buggy as it only works for first level modules -->
            <header>${basedir}/../LICENSE-ASL-2.0-HEADER.txt</header>
            <includes>
              <include>**/*.java</include>
              <include>**/*.drl</include>
            </includes>
            <mapping>
              <drl>JAVADOC_STYLE</drl>
            </mapping>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>

        <plugin>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>${version.archetype.plugin}</version>
          <configuration>
            <skip>${skipTests}</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>${version.enforcer.plugin}</version>
          <executions>
            <execution>
              <id>enforce-versions</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireMavenVersion>
                    <version>${version.maven}</version>
                  </requireMavenVersion>
                  <requireJavaVersion>
                    <version>${version.jdk}</version>
                  </requireJavaVersion>
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>${version.clean.plugin}</version>
          <executions>
            <execution>
              <id>default-clean</id>
              <phase>clean</phase>
              <goals>
                <goal>clean</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>${version.install.plugin}</version>
          <executions>
            <execution>
              <id>default-install</id>
              <phase>install</phase>
              <goals>
                <goal>install</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>${version.site.plugin}</version>
          <executions>
            <execution>
              <id>default-site</id>
              <phase>site</phase>
              <goals>
                <goal>site</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>${version.dependency.plugin}</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>${version.deploy.plugin}</version>
          <configuration>
            <retryFailedDeploymentCount>10</retryFailedDeploymentCount>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${version.compiler.plugin}</version>
          <configuration>
            <showDeprecation>true</showDeprecation>
            <showWarnings>true</showWarnings>
            <release>${maven.compiler.release}</release>
            <compilerArgs>
              <arg>-Xlint:unchecked</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>${version.antrun.plugin}</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.ant</groupId>
              <artifactId>ant-apache-regexp</artifactId>
              <version>${version.antapacheregexp}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>${version.resources.plugin}</version>
          <configuration>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${version.surefire.plugin}</version>
          <configuration>
            <includes>
              <include>${tests.failsafe.include}</include>
            </includes>
            <excludes>
              <exclude>${tests.surefire.include}</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${version.surefire.plugin}</version>
          <configuration>
            <includes>
              <include>${tests.surefire.include}</include>
            </includes>
            <excludes>
              <exclude>${tests.failsafe.include}</exclude>
            </excludes>
            <argLine>-Xmx1024m -Dfile.encoding=UTF-8</argLine>
            <systemPropertyVariables>
              <apple.awt.UIElement>true</apple.awt.UIElement>
              <org.uberfire.nio.git.daemon.enabled>false</org.uberfire.nio.git.daemon.enabled>
              <org.uberfire.nio.git.ssh.enabled>false</org.uberfire.nio.git.ssh.enabled>
              <org.uberfire.sys.repo.monitor.disabled>true</org.uberfire.sys.repo.monitor.disabled>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>${version.exec.plugin}</version>
        </plugin>
        <!-- Packaging -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${version.jar.plugin}</version>
          <executions>
            <execution>
              <id>default-jar</id>
              <configuration>
                <archive>
                  <manifestEntries
                    combine.children="append">
                    <Automatic-Module-Name>${java.module.name}</Automatic-Module-Name>
                  </manifestEntries>
                </archive>
              </configuration>
            </execution>
            <execution>
              <id>test-jar</id>
              <goals>
                <goal>test-jar</goal>
              </goals>
              <configuration>
                <skipIfEmpty>true</skipIfEmpty>
                <excludes>
                  <exclude>**/logback-test.xml</exclude>
                  <exclude>**/jndi.properties</exclude>
                </excludes>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <archive>
              <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>${version.source.plugin}</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
            <execution>
              <id>attach-test-sources</id>
              <goals>
                <goal>test-jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.commonjava.maven.plugins</groupId>
          <artifactId>project-sources-maven-plugin</artifactId>
          <version>${version.project.sources.plugin}</version>
          <executions>
            <execution>
              <id>project-sources-archive</id>
              <phase>initialize</phase>
              <goals>
                <goal>archive</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-invoker-plugin</artifactId>
          <version>${version.invoker.plugin}</version>
          <configuration>
            <skipInstallation>${skipTests}</skipInstallation>
            <skipInvocation>${skipTests}</skipInvocation>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>${version.versions.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <pushChanges>false</pushChanges>
            <autoVersionSubmodules>true</autoVersionSubmodules>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>findbugs-maven-plugin</artifactId>
          <version>${version.findbugs.plugin}</version>
          <configuration>
            <maxRank>6</maxRank>
            <effort>Max</effort>
            <xmlOutput>true</xmlOutput>
            <failOnError>${findbugs.failOnViolation}</failOnError>
            <excludeFilterFile>findbugs-excludes.xml</excludeFilterFile>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>${version.plugin.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.jboss.jandex</groupId>
          <artifactId>jandex-maven-plugin</artifactId>
          <version>${version.jandex.plugin}</version>
          <executions>
            <execution>
              <id>make-index</id>
              <goals>
                <goal>jandex</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-maven-plugin</artifactId>
          <version>${version.io.quarkus}</version>
        </plugin>
        <plugin>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
          <version>${version.io.quarkus}</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <!-- Entry needed to create test-jars even for packaging types war, 
          bundle, ... -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
      </plugin>
      <plugin>
        <!-- Entry needed to create, install and deploy sources jars -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>
    </plugins>

  </build>
  <profiles>
    <profile>
      <id>main</id>
      <activation>
        <property>
          <name>!quick</name>
        </property>
      </activation>
      <modules>
        <module>bom</module>
        <module>api</module>
        <module>workflow</module>
        <module>addons</module>
        <module>codegen</module>
        <module>quarkus-extension</module>
        <module>archetypes</module>
        <module>decision</module>
        <module>integration-tests</module>
      </modules>
    </profile>
    <profile>
      <id>release</id>
      <modules>
        <module>bom</module>
        <module>api</module>
        <module>workflow</module>
        <module>addons</module>
        <module>codegen</module>
        <module>quarkus-extension</module>
        <module>archetypes</module>
        <module>decision</module>
        <module>integration-tests</module>
      </modules>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</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.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>${version.javadoc.plugin}</version>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <links>
                    <link>http://docs.oracle.com/javase/8/docs/api</link>
                  </links>
                  <minmemory>128m</minmemory>
                  <maxmemory>512m</maxmemory>
                  <author>false</author>
                  <breakiterator>true</breakiterator>
                  <quiet>true</quiet>
                  <additionalparam>${javadoc.additional.params}</additionalparam>
                  <failOnError>false</failOnError>
                  <doclint>none</doclint>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>quick</id>
      <activation>
        <property>
          <name>quick</name>
        </property>
      </activation>
      <modules>
        <module>bom</module>
        <module>api</module>
        <module>workflow</module>
        <module>addons</module>
        <module>codegen</module>
        <module>quarkus-extension</module>
        <module>archetypes</module>
        <module>decision</module>
      </modules>
    </profile>
  </profiles>
</project>
