<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<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>

  <groupId>org.kie.kogito.examples</groupId>
  <artifactId>serverless-workflow-examples-parent</artifactId>
  <version>999-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Kogito Example :: Serverless Workflow Examples :: Parent</name>

  <properties>
    <java.module.name>org.kie.kogito.examples.serverless.workflow</java.module.name>
    <!-- Reproducible builds -->
    <project.build.outputTimestamp>2024-01-16T00:00:00Z</project.build.outputTimestamp>
    <version.maven.artifact.plugin>3.4.1</version.maven.artifact.plugin>
    <container.image.kafka>redpandadata/redpanda:v24.3.1</container.image.kafka>
  </properties>

  <repositories>
    <!-- useful to resolve parent pom when it is a SNAPSHOT -->
    <repository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>https://repository.apache.org/snapshots</url>
    </repository>
  </repositories>

  <build>
    <pluginManagement>
      <plugins>
        <!-- Reproducible builds -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-artifact-plugin</artifactId>
          <version>${version.maven.artifact.plugin}</version>
          <configuration>
            <outputTimestamp>${project.build.outputTimestamp}</outputTimestamp>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>