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

  <properties>
    <project.tile.plugins.jib-maven-plugin.version>1.7.0</project.tile.plugins.jib-maven-plugin.version>

    <!-- project settings -->
    <project.tile.docker.image.registry>docker.io</project.tile.docker.image.registry>
    <project.tile.docker.image.from>openjdk:11-jre-slim-stretch</project.tile.docker.image.from>
    <project.tile.docker.image.name>${project.artifactId}</project.tile.docker.image.name>
    <project.tile.docker.image.tag1>${project.version}</project.tile.docker.image.tag1>
    <project.tile.docker.image.tag2>latest</project.tile.docker.image.tag2>
    <project.tile.docker.image.port>8080</project.tile.docker.image.port>

    <!-- tile settings -->
    <maven-tile.jib-maven.docker.image.from>${project.tile.docker.image.from}</maven-tile.jib-maven.docker.image.from>
    <maven-tile.jib-maven.docker.image.name>${project.tile.docker.image.registry}/${project.tile.docker.image.name}</maven-tile.jib-maven.docker.image.name>
    <maven-tile.jib-maven.docker.image.tag1>${project.tile.docker.image.tag1}</maven-tile.jib-maven.docker.image.tag1>
    <maven-tile.jib-maven.docker.image.tag2>${project.tile.docker.image.tag2}</maven-tile.jib-maven.docker.image.tag2>
    <maven-tile.jib-maven.docker.image.port>${project.tile.docker.image.port}</maven-tile.jib-maven.docker.image.port>

    <maven-tile.jib-maven.docker.app.argument1>-Dspring.devtools.add-properties=false</maven-tile.jib-maven.docker.app.argument1>
    <maven-tile.jib-maven.docker.app.argument2>-Dspring.jmx.enabled=false</maven-tile.jib-maven.docker.app.argument2>
    <maven-tile.jib-maven.docker.jvmFlag1>-noverify</maven-tile.jib-maven.docker.jvmFlag1>
    <maven-tile.jib-maven.docker.jvmFlag2>--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED</maven-tile.jib-maven.docker.jvmFlag2>
    <maven-tile.jib-maven.docker.jvmFlag3>--add-opens=java.base/java.nio=ALL-UNNAMED</maven-tile.jib-maven.docker.jvmFlag3>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>${project.tile.plugins.jib-maven-plugin.version}</version>
        <configuration>
          <from>
            <image>${maven-tile.jib-maven.docker.image.from}</image>
          </from>
          <container>
            <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
            <ports>
              <port>${maven-tile.jib-maven.docker.image.port}</port>
            </ports>
            <jvmFlags>
              <jvmFlag>${maven-tile.jib-maven.docker.jvmFlag1}</jvmFlag>
              <jvmFlag>${maven-tile.jib-maven.docker.jvmFlag2}</jvmFlag>
              <jvmFlag>${maven-tile.jib-maven.docker.jvmFlag3}</jvmFlag>
            </jvmFlags>
            <args>
              <arg>${maven-tile.jib-maven.docker.app.argument1}</arg>
              <arg>${maven-tile.jib-maven.docker.app.argument2}</arg>
            </args>
          </container>
          <to>
            <image>${maven-tile.jib-maven.docker.image.name}:${maven-tile.jib-maven.docker.image.tag1}</image>
            <tags>
              <tag>${maven-tile.jib-maven.docker.image.tag2}</tag>
            </tags>
          </to>
        </configuration>
        <executions>
          <execution>
            <id>build-docker</id>
            <phase>install</phase>
            <goals>
              <goal>dockerBuild</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>docker-push</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>jib-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>deploy-docker</id>
                <phase>install</phase>
                <goals>
                  <goal>build</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>docker-auth-push</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>jib-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>deploy-docker</id>
                <phase>install</phase>
                <goals>
                  <goal>build</goal>
                </goals>
                <configuration>
                  <to>
                    <auth>
                      <username>${docker.auth.username}</username>
                      <password>${docker.auth.password}</password>
                    </auth>
                  </to>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
