<?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">
  <parent>
    <artifactId>hudi-hadoop-docker</artifactId>
    <groupId>org.apache.hudi</groupId>
    <version>0.6.0</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <packaging>pom</packaging>
  <artifactId>hudi-hadoop-sparkbase-docker</artifactId>

  <description>Base Docker Image with Hoodie</description>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <checkstyle.skip>true</checkstyle.skip>
    <main.basedir>${project.parent.parent.basedir}</main.basedir>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.hudi</groupId>
        <artifactId>hudi-hadoop-hive-docker</artifactId>
        <version>${project.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <!-- Build Docker image -->
      <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>dockerfile-maven-plugin</artifactId>
        <version>${dockerfile.maven.version}</version>
        <executions>
          <execution>
            <id>tag-latest</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>build</goal>
              <goal>tag</goal>
              <!-- <goal>push</goal> -->
            </goals>
            <configuration>
              <skip>${docker.build.skip}</skip>
              <pullNewerImage>false</pullNewerImage>
              <repository>apachehudi/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkbase_${docker.spark.version}</repository>
              <force>true</force>
              <tag>latest</tag>
            </configuration>
          </execution>
          <execution>
            <id>tag-version</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>build</goal>
              <goal>tag</goal>
              <!-- <goal>push</goal> -->
            </goals>
            <configuration>
              <skip>${docker.build.skip}</skip>
              <pullNewerImage>false</pullNewerImage>
              <repository>apachehudi/hudi-hadoop_${docker.hadoop.version}-hive_${docker.hive.version}-sparkbase_${docker.spark.version}</repository>
              <force>true</force>
              <tag>${project.version}</tag>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
