<?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: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.apache</groupId>
        <artifactId>apache</artifactId>
        <version>23</version>
    </parent>

    <artifactId>statefun-parent</artifactId>
    <groupId>org.apache.flink</groupId>
    <name>statefun-parent</name>
    <version>3.2-SNAPSHOT</version>
    <packaging>pom</packaging>

    <url>http://flink.apache.org</url>
    <inceptionYear>2014</inceptionYear>

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>https://github.com/apache/flink-statefun</url>
        <connection>git@github.com:apache/flink-statefun.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/flink-statefun.git</developerConnection>
    </scm>

    <modules>
        <module>statefun-sdk-embedded</module>
        <module>statefun-sdk-protos</module>
        <module>statefun-sdk-java</module>
        <module>statefun-sdk-python</module>
        <module>statefun-sdk-go</module>
        <module>statefun-kafka-io</module>
        <module>statefun-kinesis-io</module>
        <module>statefun-flink</module>
        <module>statefun-shaded</module>
        <module>statefun-testutil</module>

        <!--
            Always build the end-to-end tests module last,
            since the module builds the base Stateful Functions image with the
            built project artifacts before running the end-to-end tests.
        -->
        <module>statefun-e2e-tests</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spotless-maven-plugin.version>1.20.0</spotless-maven-plugin.version>
        <auto-service.version>1.0-rc6</auto-service.version>
        <protobuf.version>3.7.1</protobuf.version>
        <unixsocket.version>2.3.2</unixsocket.version>
        <protoc-jar-maven-plugin.version>3.11.1</protoc-jar-maven-plugin.version>
        <flink.version>1.13.2</flink.version>
        <scala.binary.version>2.12</scala.binary.version>
        <test.unit.pattern>**/*Test.*</test.unit.pattern>
        <root.dir>${rootDir}</root.dir>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.google.auto.service</groupId>
            <artifactId>auto-service-annotations</artifactId>
            <version>${auto-service.version}</version>
        </dependency>
    </dependencies>


    <profiles>
        <!--
            We're reusing the apache-release build profile defined in the Apache Parent POM,
            with one exclusion: do not run the source-release-assembly execution goal.
            We have our own scripts to create the source release, which correctly excludes
            binaries from distribution tarball.
            The script can be found under tools/releasing/create_source_release.sh.
        -->
        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.apache.resources</groupId>
                                <artifactId>apache-source-release-assembly-descriptor</artifactId>
                                <version>1.0.6</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <id>source-release-assembly</id>
                                <!-- disable the execution -->
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>java11</id>
            <activation>
                <jdk>[11,)</jdk>
            </activation>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>11</source>
                            <target>11</target>
                            <compilerArgs combine.children="append">
                                <arg>--add-exports=java.base/sun.net.util=ALL-UNNAMED</arg>
                                <arg>--add-exports=java.management/sun.management=ALL-UNNAMED</arg>
                            </compilerArgs>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.github.os72</groupId>
                    <artifactId>protoc-jar-maven-plugin</artifactId>
                    <version>${protoc-jar-maven-plugin.version}</version>
                    <executions>
                        <!-- Generate src/main/protobuf -->
                        <execution>
                            <id>generate-protobuf-sources</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <includeStdTypes>true</includeStdTypes>
                                <protocVersion>${protobuf.version}</protocVersion>
                                <cleanOutputFolder>true</cleanOutputFolder>
                                <outputDirectory>${basedir}/target/generated-sources/protoc-jar</outputDirectory>
                            </configuration>
                        </execution>

                        <!-- Generate src/test/protobuf -->
                        <execution>
                            <id>generate-protobuf-test-sources</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <includeStdTypes>true</includeStdTypes>
                                <protocVersion>${protobuf.version}</protocVersion>
                                <inputDirectories>
                                    <include>src/test/protobuf</include>
                                </inputDirectories>
                                <outputTargets>
                                    <outputTarget>
                                        <type>descriptor</type>
                                        <outputDirectory>${basedir}/target/test-classes</outputDirectory>
                                    </outputTarget>
                                    <outputTarget>
                                        <type>java</type>
                                        <outputDirectory>${basedir}/target/generated-test-sources/protoc-jar</outputDirectory>
                                    </outputTarget>
                                </outputTargets>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <!-- Java compiler -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>com.google.auto.service</groupId>
                            <artifactId>auto-service</artifactId>
                            <version>${auto-service.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>

            <!-- Licence -->
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>0.13</version>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludes>
                        <!-- Additional files like .gitignore etc.-->
                        <exclude>**/.*/**</exclude>
                        <exclude>**/*.prefs</exclude>
                        <exclude>**/*.log</exclude>
                        <!-- Administrative files in the main trunk. -->
                        <exclude>**/README.md</exclude>
                        <exclude>**/README.zh.md</exclude>
                        <exclude>**/CODE_OF_CONDUCT.md</exclude>
                        <exclude>.github/**</exclude>
                        <!-- IDE files. -->
                        <exclude>**/*.iml</exclude>
                        <!-- Generated content -->
                        <exclude>**/target/**</exclude>
                        <exclude>**/_build/**</exclude>
                        <exclude>docs/static/font-awesome/**</exclude>
                        <exclude>docs/resources/**</exclude>
                        <exclude>docs/public/**</exclude>
                        <exclude>docs/themes/book/**</exclude>
                        <exclude>docs/assets/github.css</exclude>
                        <exclude>docs/static/js/anchor.min.js</exclude>
                        <!-- Generated code  -->
                        <exclude>**/generated/**</exclude>
                        <!-- Bundled license files -->
                        <exclude>**/LICENSE*</exclude>
                        <!-- Python venv -->
                        <exclude>**/venv/**</exclude>
                        <!-- Generated lock file -->
                        <exclude>**/go.sum/**</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!-- Java code style -->
            <plugin>
                <groupId>com.diffplug.spotless</groupId>
                <artifactId>spotless-maven-plugin</artifactId>
                <version>${spotless-maven-plugin.version}</version>
                <configuration>
                    <java>
                        <googleJavaFormat>
                            <version>1.7</version>
                            <style>GOOGLE</style>
                        </googleJavaFormat>
                        <removeUnusedImports/>
                        <excludes>
                            <exclude>**/generated/**/*.*</exclude>
                        </excludes>
                    </java>
                </configuration>
                <executions>
                    <execution>
                        <id>spotless-check</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- Dependency Enforcer -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M2</version>
                <executions>
                    <execution>
                        <id>enforce</id>
                        <configuration>
                            <rules>
                                <dependencyConvergence/>
                            </rules>
                        </configuration>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.commonjava.maven.plugins</groupId>
                <artifactId>directory-maven-plugin</artifactId>
                <version>0.1</version>
                <executions>
                    <execution>
                        <id>directories</id>
                        <goals>
                            <goal>highest-basedir</goal>
                        </goals>
                        <phase>initialize</phase>
                        <configuration>
                            <property>rootDir</property>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!--surefire for unit tests and integration tests-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <trimStackTrace>false</trimStackTrace>
                    <systemPropertyVariables>
                        <forkNumber>0${surefire.forkNumber}</forkNumber>
                        <project.basedir>${project.basedir}</project.basedir>
                    </systemPropertyVariables>
                    <argLine>-Xms256m -Xmx2048m -Dmvn.forkNumber=${surefire.forkNumber} -XX:+UseG1GC</argLine>
                </configuration>
                <executions>
                    <!--execute all the unit tests-->
                    <execution>
                        <id>default-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>${test.unit.pattern}</include>
                            </includes>
                            <reuseForks>true</reuseForks>
                        </configuration>
                    </execution>
                    <!--execute all the integration tests-->
                    <execution>
                        <id>integration-tests</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>**/*ITCase.*</include>
                            </includes>
                            <excludes>
                                <exclude>${test.unit.pattern}</exclude>
                            </excludes>
                            <reuseForks>false</reuseForks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

