| <?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> | |
| <parent> | |
| <groupId>org.apache</groupId> | |
| <artifactId>apache</artifactId> | |
| <version>23</version> | |
| </parent> | |
| <artifactId>paimon-parent</artifactId> | |
| <groupId>org.apache.paimon</groupId> | |
| <name>Paimon : </name> | |
| <version>2.2-SNAPSHOT</version> | |
| <packaging>pom</packaging> | |
| <url>https://paimon.apache.org</url> | |
| <inceptionYear>2023</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/paimon</url> | |
| <connection>git@github.com:apache/paimon.git</connection> | |
| <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/paimon.git</developerConnection> | |
| </scm> | |
| <modules> | |
| <module>paimon-benchmark</module> | |
| <module>paimon-codegen</module> | |
| <module>paimon-codegen-loader</module> | |
| <module>paimon-common</module> | |
| <module>paimon-core</module> | |
| <module>paimon-flink</module> | |
| <module>paimon-docs</module> | |
| <module>paimon-e2e-tests</module> | |
| <module>paimon-filesystems</module> | |
| <module>paimon-format</module> | |
| <module>paimon-lance</module> | |
| <module>paimon-vfs</module> | |
| <module>paimon-bundle</module> | |
| <module>paimon-hive</module> | |
| <module>paimon-spark</module> | |
| <module>paimon-service</module> | |
| <module>paimon-test-utils</module> | |
| <module>paimon-arrow</module> | |
| <module>tools/ci/paimon-ci-tools</module> | |
| <module>paimon-api</module> | |
| <module>paimon-lumina</module> | |
| <module>paimon-vortex</module> | |
| <module>paimon-mosaic</module> | |
| <module>paimon-full-text</module> | |
| <module>paimon-vector</module> | |
| </modules> | |
| <properties> | |
| <project.build.outputTimestamp>2026-09-11T04:04:13Z</project.build.outputTimestamp> | |
| <paimon.shade.version>0.8.0</paimon.shade.version> | |
| <paimon.shade.jackson.version>2.14.2</paimon.shade.jackson.version> | |
| <paimon.shade.guava.version>30.1.1-jre</paimon.shade.guava.version> | |
| <paimon.shade.caffeine.version>2.9.3</paimon.shade.caffeine.version> | |
| <paimon.shade.netty.version>4.1.100.Final</paimon.shade.netty.version> | |
| <antlr4.version>4.9.3</antlr4.version> | |
| <hadoop.version>2.8.5</hadoop.version> | |
| <scala.binary.version>2.12</scala.binary.version> | |
| <!-- TODO: Update default Flink to 2.x after Paimon updates default Java to 11 --> | |
| <paimon-flinkx-common>paimon-flink1-common</paimon-flinkx-common> | |
| <paimon-flink-common.flink.version>1.20.1</paimon-flink-common.flink.version> | |
| <flink.scala.binary.version>2.12</flink.scala.binary.version> | |
| <scala212.version>2.12.18</scala212.version> | |
| <scala213.version>2.13.16</scala213.version> | |
| <scala.version>${scala212.version}</scala.version> | |
| <codegen.scala.version>${scala212.version}</codegen.scala.version> | |
| <snappy.version>1.1.10.8</snappy.version> | |
| <airlift.version>2.0.3</airlift.version> | |
| <lz4.version>1.10.4</lz4.version> | |
| <slf4j.version>1.7.32</slf4j.version> | |
| <log4j.version>2.25.5</log4j.version> | |
| <junit4.version>4.13.2</junit4.version> | |
| <junit5.version>5.8.1</junit5.version> | |
| <spotless.version>2.13.0</spotless.version> | |
| <spotless.delimiter>package</spotless.delimiter> | |
| <target.java.version>1.8</target.java.version> | |
| <assertj.version>3.27.7</assertj.version> | |
| <javax.annotation-api.version>1.3.2</javax.annotation-api.version> | |
| <flink.forkCount>1C</flink.forkCount> | |
| <flink.reuseForks>true</flink.reuseForks> | |
| <testcontainers.version>1.19.1</testcontainers.version> | |
| <iceberg.version>1.6.1</iceberg.version> | |
| <parquet.version>1.16.0</parquet.version> | |
| <orc.version>1.9.8</orc.version> | |
| <protobuf-java.version>3.19.6</protobuf-java.version> | |
| <roaringbitmap.version>1.2.1</roaringbitmap.version> | |
| <arrow.version>15.0.0</arrow.version> | |
| <paimon.full-text-index.version>0.1.0</paimon.full-text-index.version> | |
| <!-- Can be set to any value to reproduce a specific build. --> | |
| <test.randomization.seed/> | |
| <test.unit.pattern>**/*Test.*</test.unit.pattern> | |
| <test.flink.main.version>1.20</test.flink.main.version> | |
| <test.flink.version>1.20.1</test.flink.version> | |
| <test.flink.connector.kafka.version>3.4.0-1.20</test.flink.connector.kafka.version> | |
| <test.flink.connector.hive.version>1.20.0</test.flink.connector.hive.version> | |
| <test.mysql.connector.java.version>8.0.27</test.mysql.connector.java.version> | |
| <!-- spark profile properties--> | |
| <paimon-sparkx-common>paimon-spark3-common_${scala.binary.version}</paimon-sparkx-common> | |
| <paimon-spark-common.spark.version>3.5.8</paimon-spark-common.spark.version> | |
| <test.spark.main.version>3.3</test.spark.main.version> | |
| <test.spark.version>3.3.0</test.spark.version> | |
| <zstd-jni.version>1.5.5-11</zstd-jni.version> | |
| <janino.version>3.0.11</janino.version> | |
| <mockito.version>3.4.6</mockito.version> | |
| <mockito-junit-jupiter.version>4.11.0</mockito-junit-jupiter.version> | |
| <okhttp.version>4.12.0</okhttp.version> | |
| <apache.hc.core.version>5.3.6</apache.hc.core.version> | |
| <apache.hc.client.version>5.5.1</apache.hc.client.version> | |
| <jaxb.api.version>2.3.1</jaxb.api.version> | |
| <findbugs.version>1.3.9</findbugs.version> | |
| <json-smart.version>2.5.2</json-smart.version> | |
| <avro.version>1.11.4</avro.version> | |
| <kafka.version>3.2.3</kafka.version> | |
| <scala-maven-plugin.version>3.2.2</scala-maven-plugin.version> | |
| <scalatest-maven-plugin.version>2.1.0</scalatest-maven-plugin.version> | |
| <jsoup.version>1.15.3</jsoup.version> | |
| <CodeCacheSize>128m</CodeCacheSize> | |
| <extraJavaTestArgs> | |
| -XX:+IgnoreUnrecognizedVMOptions | |
| --add-opens=java.base/java.lang=ALL-UNNAMED | |
| --add-opens=java.base/java.lang.invoke=ALL-UNNAMED | |
| --add-opens=java.base/java.lang.reflect=ALL-UNNAMED | |
| --add-opens=java.base/java.io=ALL-UNNAMED | |
| --add-opens=java.base/java.net=ALL-UNNAMED | |
| --add-opens=java.base/java.nio=ALL-UNNAMED | |
| --add-opens=java.base/java.util=ALL-UNNAMED | |
| --add-opens=java.base/java.util.concurrent=ALL-UNNAMED | |
| --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED | |
| --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED | |
| --add-opens=java.base/sun.nio.ch=ALL-UNNAMED | |
| --add-opens=java.base/sun.nio.cs=ALL-UNNAMED | |
| --add-opens=java.base/sun.security.action=ALL-UNNAMED | |
| --add-opens=java.base/sun.util.calendar=ALL-UNNAMED | |
| --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED | |
| -Djdk.reflect.useDirectMethodHandle=false | |
| -Dio.netty.tryReflectionSetAccessible=true | |
| </extraJavaTestArgs> | |
| </properties> | |
| <dependencies> | |
| <!-- Root dependencies for all projects --> | |
| <!-- Logging API --> | |
| <dependency> | |
| <groupId>org.slf4j</groupId> | |
| <artifactId>slf4j-api</artifactId> | |
| </dependency> | |
| <!-- 'javax.annotation' classes like '@Nullable' --> | |
| <dependency> | |
| <groupId>com.google.code.findbugs</groupId> | |
| <artifactId>jsr305</artifactId> | |
| </dependency> | |
| <!-- test dependencies --> | |
| <dependency> | |
| <groupId>org.junit.jupiter</groupId> | |
| <artifactId>junit-jupiter</artifactId> | |
| <scope>test</scope> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.assertj</groupId> | |
| <artifactId>assertj-core</artifactId> | |
| <version>${assertj.version}</version> | |
| <scope>test</scope> | |
| </dependency> | |
| <!-- tests will have log4j as the default logging framework available --> | |
| <dependency> | |
| <groupId>org.apache.logging.log4j</groupId> | |
| <artifactId>log4j-slf4j-impl</artifactId> | |
| <scope>test</scope> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.logging.log4j</groupId> | |
| <artifactId>log4j-api</artifactId> | |
| <scope>test</scope> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.logging.log4j</groupId> | |
| <artifactId>log4j-core</artifactId> | |
| <scope>test</scope> | |
| </dependency> | |
| <dependency> | |
| <!-- API bridge between log4j 1 and 2 --> | |
| <groupId>org.apache.logging.log4j</groupId> | |
| <artifactId>log4j-1.2-api</artifactId> | |
| <scope>test</scope> | |
| </dependency> | |
| </dependencies> | |
| <dependencyManagement> | |
| <dependencies> | |
| <dependency> | |
| <groupId>javax.annotation</groupId> | |
| <artifactId>javax.annotation-api</artifactId> | |
| <version>${javax.annotation-api.version}</version> | |
| </dependency> | |
| <!-- This manages the 'javax.annotation' annotations (JSR305) --> | |
| <dependency> | |
| <groupId>com.google.code.findbugs</groupId> | |
| <artifactId>jsr305</artifactId> | |
| <version>${findbugs.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.junit</groupId> | |
| <artifactId>junit-bom</artifactId> | |
| <version>${junit5.version}</version> | |
| <type>pom</type> | |
| <scope>import</scope> | |
| </dependency> | |
| <dependency> | |
| <groupId>junit</groupId> | |
| <artifactId>junit</artifactId> | |
| <version>${junit4.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.slf4j</groupId> | |
| <artifactId>slf4j-api</artifactId> | |
| <version>${slf4j.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.logging.log4j</groupId> | |
| <artifactId>log4j-slf4j-impl</artifactId> | |
| <version>${log4j.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.logging.log4j</groupId> | |
| <artifactId>log4j-api</artifactId> | |
| <version>${log4j.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.logging.log4j</groupId> | |
| <artifactId>log4j-core</artifactId> | |
| <version>${log4j.version}</version> | |
| </dependency> | |
| <dependency> | |
| <!-- API bridge between log4j 1 and 2 --> | |
| <groupId>org.apache.logging.log4j</groupId> | |
| <artifactId>log4j-1.2-api</artifactId> | |
| <version>${log4j.version}</version> | |
| </dependency> | |
| <dependency> | |
| <!-- pin transitive dependency of org.apache.hadoop:hadoop-common:2.8.5 --> | |
| <groupId>net.minidev</groupId> | |
| <artifactId>json-smart</artifactId> | |
| <version>${json-smart.version}</version> | |
| </dependency> | |
| </dependencies> | |
| </dependencyManagement> | |
| <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>docs-and-source</id> | |
| <activation> | |
| <property> | |
| <name>docs-and-source</name> | |
| </property> | |
| </activation> | |
| <build> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-source-plugin</artifactId> | |
| <version>3.2.1</version> | |
| <configuration> | |
| <excludes> | |
| <exclude>**/*.class</exclude> | |
| </excludes> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <id>attach-sources</id> | |
| <goals> | |
| <goal>jar-no-fork</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-javadoc-plugin</artifactId> | |
| <configuration> | |
| <quiet>true</quiet> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <id>attach-javadocs</id> | |
| <goals> | |
| <goal>jar</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| </profile> | |
| <profile> | |
| <id>paimon-website-javadoc</id> | |
| <build> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-javadoc-plugin</artifactId> | |
| <version>3.1.1</version><!--$NO-MVN-MAN-VER$--> | |
| <configuration combine.self="override"> | |
| <quiet>true</quiet> | |
| <detectOfflineLinks>false</detectOfflineLinks> | |
| <additionalJOptions> | |
| <additionalJOption>-Xdoclint:none</additionalJOption> | |
| </additionalJOptions> | |
| </configuration> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| </profile> | |
| <profile> | |
| <id>spark3</id> | |
| <modules> | |
| <module>paimon-spark/paimon-spark3-common</module> | |
| <module>paimon-spark/paimon-spark-3.5</module> | |
| <module>paimon-spark/paimon-spark-3.4</module> | |
| <module>paimon-spark/paimon-spark-3.3</module> | |
| <module>paimon-spark/paimon-spark-3.2</module> | |
| </modules> | |
| <properties> | |
| <scala.binary.version>2.12</scala.binary.version> | |
| <scala.version>${scala212.version}</scala.version> | |
| <paimon-spark-common.spark.version>3.5.8</paimon-spark-common.spark.version> | |
| <paimon-sparkx-common>paimon-spark3-common_${scala.binary.version}</paimon-sparkx-common> | |
| <!-- todo: support the latest spark in paimon e2e test2 --> | |
| <test.spark.main.version>3.3</test.spark.main.version> | |
| <test.spark.version>3.3.0</test.spark.version> | |
| </properties> | |
| <activation> | |
| <activeByDefault>true</activeByDefault> | |
| <property> | |
| <name>spark3</name> | |
| </property> | |
| </activation> | |
| </profile> | |
| <profile> | |
| <id>spark4</id> | |
| <modules> | |
| <module>paimon-spark/paimon-spark4-common</module> | |
| <module>paimon-spark/paimon-spark-ut-4.0</module> | |
| <module>paimon-spark/paimon-spark-4.0</module> | |
| <module>paimon-spark/paimon-spark-4.1</module> | |
| </modules> | |
| <properties> | |
| <target.java.version>17</target.java.version> | |
| <antlr4.version>4.13.1</antlr4.version> | |
| <scala.binary.version>2.13</scala.binary.version> | |
| <!-- Spark 4.1.2 is built against Scala 2.13.17; force the same stdlib here so that | |
| `MurmurHash3.caseClassHash$default$2` and related APIs resolve at runtime. --> | |
| <scala.version>2.13.17</scala.version> | |
| <paimon-spark-common.spark.version>4.1.2</paimon-spark-common.spark.version> | |
| <paimon-sparkx-common>paimon-spark4-common_2.13</paimon-sparkx-common> | |
| <arrow.version>18.1.0</arrow.version> | |
| <test.spark.main.version>4.1</test.spark.main.version> | |
| <test.spark.version>4.1.2</test.spark.version> | |
| </properties> | |
| <activation> | |
| <property> | |
| <name>spark4</name> | |
| </property> | |
| </activation> | |
| </profile> | |
| <profile> | |
| <id>flink1</id> | |
| <properties> | |
| <paimon-flinkx-common>paimon-flink1-common</paimon-flinkx-common> | |
| <paimon-flink-common.flink.version>1.20.1</paimon-flink-common.flink.version> | |
| <test.flink.main.version>1.20</test.flink.main.version> | |
| <test.flink.version>1.20.1</test.flink.version> | |
| </properties> | |
| <modules> | |
| <module>paimon-flink/paimon-flink-1.16</module> | |
| <module>paimon-flink/paimon-flink-1.17</module> | |
| <module>paimon-flink/paimon-flink-1.18</module> | |
| <module>paimon-flink/paimon-flink-1.19</module> | |
| <module>paimon-flink/paimon-flink-1.20</module> | |
| </modules> | |
| <activation> | |
| <activeByDefault>true</activeByDefault> | |
| <property> | |
| <name>flink1</name> | |
| </property> | |
| </activation> | |
| </profile> | |
| <profile> | |
| <id>flink2</id> | |
| <properties> | |
| <paimon-flinkx-common>paimon-flink2-common</paimon-flinkx-common> | |
| <paimon-flink-common.flink.version>2.2.0</paimon-flink-common.flink.version> | |
| <test.flink.main.version>2.2</test.flink.main.version> | |
| <test.flink.version>2.2.0</test.flink.version> | |
| <target.java.version>11</target.java.version> | |
| </properties> | |
| <modules> | |
| <module>paimon-flink/paimon-flink2-common</module> | |
| <module>paimon-flink/paimon-flink-2.0</module> | |
| <module>paimon-flink/paimon-flink-2.1</module> | |
| <module>paimon-flink/paimon-flink-2.2</module> | |
| </modules> | |
| <activation> | |
| <property> | |
| <name>flink2</name> | |
| </property> | |
| </activation> | |
| </profile> | |
| <profile> | |
| <id>scala-2.13</id> | |
| <properties> | |
| <scala.binary.version>2.13</scala.binary.version> | |
| <scala.version>${scala213.version}</scala.version> | |
| </properties> | |
| <activation> | |
| <property> | |
| <name>scala-2.13</name> | |
| </property> | |
| </activation> | |
| </profile> | |
| <profile> | |
| <id>paimon-iceberg</id> | |
| <modules> | |
| <module>paimon-iceberg</module> | |
| </modules> | |
| <activation> | |
| <jdk>11</jdk> | |
| </activation> | |
| </profile> | |
| <profile> | |
| <!-- paimon-eslib and its external ESLib/Lucene dependencies require Java 11+. Keep | |
| this module opt-in so the default reactor is independent of the external ESLib | |
| repository. Build it explicitly with -Ppaimon-eslib on JDK 11+. --> | |
| <id>paimon-eslib</id> | |
| <modules> | |
| <module>paimon-eslib</module> | |
| </modules> | |
| </profile> | |
| <profile> | |
| <!-- JDK 9+ supports the ignore-source-errors flag for javadoc --> | |
| <id>javadoc-jdk9+</id> | |
| <activation> | |
| <jdk>[9,)</jdk> | |
| </activation> | |
| <build> | |
| <pluginManagement> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-javadoc-plugin</artifactId> | |
| <configuration> | |
| <release>8</release> | |
| <additionalJOptions combine.children="append"> | |
| <!-- Suppress the error that is accepted by JDK 8 but not by JDK 11. --> | |
| <additionalJOption>--ignore-source-errors</additionalJOption> | |
| </additionalJOptions> | |
| </configuration> | |
| </plugin> | |
| </plugins> | |
| </pluginManagement> | |
| </build> | |
| </profile> | |
| <profile> | |
| <id>fast-build</id> | |
| <properties> | |
| <checkstyle.skip>true</checkstyle.skip> | |
| <spotless.check.skip>true</spotless.check.skip> | |
| <scalastyle.skip>true</scalastyle.skip> | |
| <enforcer.skip>true</enforcer.skip> | |
| <rat.skip>true</rat.skip> | |
| </properties> | |
| </profile> | |
| </profiles> | |
| <build> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-jar-plugin</artifactId> | |
| <version>3.4.2</version><!--$NO-MVN-MAN-VER$--> | |
| <configuration> | |
| <archive> | |
| <manifest> | |
| <addDefaultImplementationEntries>true</addDefaultImplementationEntries> | |
| <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> | |
| </manifest> | |
| </archive> | |
| </configuration> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-compiler-plugin</artifactId> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-checkstyle-plugin</artifactId> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.rat</groupId> | |
| <artifactId>apache-rat-plugin</artifactId> | |
| <version>0.15</version> | |
| <inherited>false</inherited> | |
| <executions> | |
| <execution> | |
| <phase>verify</phase> | |
| <goals> | |
| <goal>check</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| <configuration> | |
| <excludeSubProjects>false</excludeSubProjects> | |
| <numUnapprovedLicenses>0</numUnapprovedLicenses> | |
| <licenses> | |
| <!-- Enforce this license: | |
| 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. | |
| --> | |
| <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense"> | |
| <licenseFamilyCategory>AL2</licenseFamilyCategory> | |
| <licenseFamilyName>Apache License 2.0</licenseFamilyName> | |
| <patterns> | |
| <pattern>Licensed to the Apache Software Foundation (ASF) under one</pattern> | |
| </patterns> | |
| </license> | |
| </licenses> | |
| <licenseFamilies> | |
| <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily"> | |
| <familyName>Apache License 2.0</familyName> | |
| </licenseFamily> | |
| </licenseFamilies> | |
| <excludes> | |
| <!-- Additional files like .gitignore etc.--> | |
| <exclude>**/.*/**</exclude> | |
| <exclude>**/*.prefs</exclude> | |
| <exclude>**/*.log</exclude> | |
| <!-- Administrative files in the main trunk. --> | |
| <exclude>**/*.md</exclude> | |
| <exclude>.github/**</exclude> | |
| <!-- IDE files. --> | |
| <exclude>**/*.iml</exclude> | |
| <exclude>**/.idea/**</exclude> | |
| <!-- Generated content --> | |
| <exclude>**/target/**</exclude> | |
| <exclude>**/scalastyle-output.xml</exclude> | |
| <exclude>docs/node_modules/**</exclude> | |
| <exclude>docs/build/**</exclude> | |
| <exclude>docs/.docusaurus/**</exclude> | |
| <exclude>docs/yarn.lock</exclude> | |
| <exclude>docs/**/*.js</exclude> | |
| <exclude>docs/**/*.jsx</exclude> | |
| <exclude>docs/**/*.json</exclude> | |
| <exclude>docs/**/*.css</exclude> | |
| <exclude>docs/**/*.mdx</exclude> | |
| <exclude>docs/generated/**</exclude> | |
| <exclude>docs/static/**</exclude> | |
| <exclude>**/*.svg</exclude> | |
| <exclude>**/dependency-reduced-pom.xml</exclude> | |
| <!-- Bundled license files --> | |
| <exclude>**/LICENSE*</exclude> | |
| <!-- artifacts created during release process --> | |
| <exclude>release/**</exclude> | |
| <!-- antlr grammar files --> | |
| <exclude>paimon-common/src/main/antlr4/**</exclude> | |
| <!-- Binary compatibility fixtures --> | |
| <exclude>paimon-common/src/test/resources/fmindex-v1-golden.base64</exclude> | |
| <exclude>paimon-core/src/test/resources/compatibility/**</exclude> | |
| <exclude>paimon-python/pypaimon/sample/data/**</exclude> | |
| <exclude>**/*.proto</exclude> | |
| <exclude>**/Cargo*</exclude> | |
| </excludes> | |
| </configuration> | |
| </plugin> | |
| <plugin> | |
| <groupId>com.diffplug.spotless</groupId> | |
| <artifactId>spotless-maven-plugin</artifactId> | |
| </plugin> | |
| <!--surefire for unit tests and integration tests--> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-surefire-plugin</artifactId> | |
| <version>3.0.0-M5</version> | |
| <configuration> | |
| <useSystemClassLoader>false</useSystemClassLoader> | |
| <forkCount>${flink.forkCount}</forkCount> | |
| <reuseForks>${flink.reuseForks}</reuseForks> | |
| <trimStackTrace>false</trimStackTrace> | |
| <systemPropertyVariables> | |
| <forkNumber>0${surefire.forkNumber}</forkNumber> | |
| <checkpointing.randomization>false</checkpointing.randomization> | |
| <project.basedir>${project.basedir}</project.basedir> | |
| <!--suppress MavenModelInspection --> | |
| <test.randomization.seed>${test.randomization.seed}</test.randomization.seed> | |
| <test.flink.main.version>${test.flink.main.version}</test.flink.main.version> | |
| <test.flink.version>${test.flink.version}</test.flink.version> | |
| <!-- for junit5 --> | |
| <junit.jupiter.extensions.autodetection.enabled>true</junit.jupiter.extensions.autodetection.enabled> | |
| </systemPropertyVariables> | |
| <argLine>-Xms256m -Xmx2048m -Dmvn.forkNumber=${surefire.forkNumber} -XX:+UseG1GC ${extraJavaTestArgs}</argLine> | |
| <!-- By removing all default exclusions the nested classes get executed too --> | |
| <excludes> | |
| <exclude/> | |
| </excludes> | |
| </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> | |
| </configuration> | |
| </execution> | |
| <!--execute all the integration tests--> | |
| <execution> | |
| <id>integration-tests</id> | |
| <phase>integration-test</phase> | |
| <goals> | |
| <goal>test</goal> | |
| </goals> | |
| <configuration> | |
| <includes> | |
| <include>**/*.*</include> | |
| </includes> | |
| <excludes> | |
| <exclude>${test.unit.pattern}</exclude> | |
| </excludes> | |
| <reuseForks>false</reuseForks> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-enforcer-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>enforce-maven</id> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <configuration> | |
| <rules> | |
| <requireMavenVersion> | |
| <!-- enforce at least mvn version 3.1.1 (see FLINK-12447) --> | |
| <version>[3.1.1,)</version> | |
| </requireMavenVersion> | |
| <requireJavaVersion> | |
| <version>${target.java.version}</version> | |
| </requireJavaVersion> | |
| </rules> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>ban-unsafe-snakeyaml</id> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <configuration> | |
| <rules> | |
| <bannedDependencies> | |
| <excludes> | |
| <exclude>org.yaml:snakeyaml:(,1.26]</exclude> | |
| </excludes> | |
| <includes> | |
| <!-- Snakeyaml is pulled in by many modules without using it in production, | |
| so there's no benefit in us investing time into bumping these. --> | |
| <include>org.yaml:snakeyaml:(,1.26]:*:test</include> | |
| </includes> | |
| </bannedDependencies> | |
| </rules> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>ban-unsafe-jackson</id> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <configuration> | |
| <rules> | |
| <bannedDependencies> | |
| <excludes> | |
| <exclude>com.fasterxml.jackson*:*:(,2.7.0]</exclude> | |
| </excludes> | |
| </bannedDependencies> | |
| </rules> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>forbid-log4j-1</id> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <configuration> | |
| <rules> | |
| <bannedDependencies> | |
| <excludes> | |
| <exclude>log4j:log4j</exclude> | |
| <exclude>org.slf4j:slf4j-log4j12</exclude> | |
| </excludes> | |
| </bannedDependencies> | |
| </rules> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>forbid-direct-table-planner-dependencies</id> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <configuration> | |
| <rules> | |
| <bannedDependencies> | |
| <excludes> | |
| <exclude>org.apache.flink:flink-table-planner_${flink.scala.binary.version}</exclude> | |
| </excludes> | |
| <includes> | |
| <include>org.apache.flink:flink-table-planner_${flink.scala.binary.version}:*:*:test</include> | |
| </includes> | |
| <message> | |
| Direct dependencies on flink-table-planner are not allowed. | |
| You should depend on either Table API modules, flink-table-planner-loader or paimon-codegen-loader. | |
| </message> | |
| </bannedDependencies> | |
| </rules> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>dependency-convergence</id> | |
| <!-- disabled by default as it interacts badly with shade-plugin --> | |
| <phase>none</phase> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <configuration> | |
| <rules> | |
| <dependencyConvergence/> | |
| </rules> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-shade-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>shade-paimon</id> | |
| <phase>package</phase> | |
| <goals> | |
| <goal>shade</goal> | |
| </goals> | |
| <configuration> | |
| <shadeTestJar>false</shadeTestJar> | |
| <shadedArtifactAttached>false</shadedArtifactAttached> | |
| <createDependencyReducedPom>true</createDependencyReducedPom> | |
| <!-- Filters MUST be appended; merging filters does not work properly, see MSHADE-305 --> | |
| <filters combine.children="append"> | |
| <!-- Globally exclude log4j.properties from our JAR files. --> | |
| <filter> | |
| <artifact>*</artifact> | |
| <excludes> | |
| <exclude>log4j.properties</exclude> | |
| <exclude>log4j2.properties</exclude> | |
| <exclude>log4j-test.properties</exclude> | |
| <exclude>log4j2-test.properties</exclude> | |
| <!-- Do not copy the signatures in the META-INF folder. | |
| Otherwise, this might cause SecurityExceptions when using the JAR. --> | |
| <exclude>META-INF/*.SF</exclude> | |
| <exclude>META-INF/*.DSA</exclude> | |
| <exclude>META-INF/*.RSA</exclude> | |
| </excludes> | |
| </filter> | |
| <!-- drop entries into META-INF and NOTICE files for the dummy artifact --> | |
| <filter> | |
| <artifact>org.apache.flink:force-shading</artifact> | |
| <excludes> | |
| <exclude>**</exclude> | |
| </excludes> | |
| </filter> | |
| <!-- io.netty:netty brings its own LICENSE.txt which we don't need --> | |
| <filter> | |
| <artifact>io.netty:netty</artifact> | |
| <excludes> | |
| <exclude>META-INF/LICENSE.txt</exclude> | |
| </excludes> | |
| </filter> | |
| </filters> | |
| <artifactSet> | |
| <includes> | |
| <!-- Unfortunately, the next line is necessary for now to force the execution | |
| of the Shade plugin upon all sub modules. This will generate effective poms, | |
| i.e. poms which do not contain properties which are derived from this root pom. | |
| In particular, the Scala version properties are defined in the root pom and without | |
| shading, the root pom would have to be Scala suffixed and thereby all other modules. | |
| --> | |
| <include>org.apache.flink:force-shading</include> | |
| </includes> | |
| </artifactSet> | |
| <transformers combine.children="append"> | |
| <!-- The service transformer is needed to merge META-INF/services files --> | |
| <transformer | |
| implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> | |
| <!-- The ApacheNoticeResourceTransformer collects and aggregates NOTICE files --> | |
| <transformer | |
| implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer"> | |
| <projectName>Apache Paimon</projectName> | |
| <inceptionYear>${project.inceptionYear}</inceptionYear> | |
| <encoding>UTF-8</encoding> | |
| </transformer> | |
| </transformers> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-clean-plugin</artifactId> | |
| <configuration> | |
| <filesets> | |
| <fileset> | |
| <directory>${project.basedir}</directory> | |
| <includes> | |
| <include>dependency-reduced-pom.xml</include> | |
| </includes> | |
| </fileset> | |
| </filesets> | |
| </configuration> | |
| </plugin> | |
| <!-- generate configuration docs --> | |
| <plugin> | |
| <groupId>org.commonjava.maven.plugins</groupId> | |
| <artifactId>directory-maven-plugin</artifactId> | |
| <version>1.0</version> | |
| <executions> | |
| <execution> | |
| <id>directories</id> | |
| <goals> | |
| <goal>directory-of</goal> | |
| </goals> | |
| <phase>initialize</phase> | |
| <configuration> | |
| <property>rootDir</property> | |
| <project> | |
| <groupId>org.apache.paimon</groupId> | |
| <artifactId>paimon-parent</artifactId> | |
| </project> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| </plugins> | |
| <pluginManagement> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.codehaus.mojo</groupId> | |
| <artifactId>build-helper-maven-plugin</artifactId> | |
| <version>1.7</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.codehaus.mojo</groupId> | |
| <artifactId>templating-maven-plugin</artifactId> | |
| <version>3.0.0</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-compiler-plugin</artifactId> | |
| <version>3.8.0</version> | |
| <configuration> | |
| <source>${target.java.version}</source> | |
| <target>${target.java.version}</target> | |
| <!-- The semantics of this option are reversed, see MCOMPILER-209. --> | |
| <useIncrementalCompilation>false</useIncrementalCompilation> | |
| <compilerArgs> | |
| <!-- Prevents recompilation due to missing package-info.class, see MCOMPILER-205 --> | |
| <arg>-Xpkginfo:always</arg> | |
| <arg>-Xlint:deprecation</arg> | |
| </compilerArgs> | |
| </configuration> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-checkstyle-plugin</artifactId> | |
| <version>2.17</version> | |
| <dependencies> | |
| <dependency> | |
| <groupId>com.puppycrawl.tools</groupId> | |
| <artifactId>checkstyle</artifactId> | |
| <!-- Note: match version with docs/flinkDev/ide_setup.md --> | |
| <version>8.14</version> | |
| </dependency> | |
| </dependencies> | |
| <executions> | |
| <execution> | |
| <id>validate</id> | |
| <phase>validate</phase> | |
| <goals> | |
| <goal>check</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| <configuration> | |
| <suppressionsLocation>/tools/maven/suppressions.xml</suppressionsLocation> | |
| <includeTestSourceDirectory>true</includeTestSourceDirectory> | |
| <configLocation>/tools/maven/checkstyle.xml</configLocation> | |
| <logViolationsToConsole>true</logViolationsToConsole> | |
| <failOnViolation>true</failOnViolation> | |
| </configuration> | |
| </plugin> | |
| <plugin> | |
| <groupId>com.diffplug.spotless</groupId> | |
| <artifactId>spotless-maven-plugin</artifactId> | |
| <version>${spotless.version}</version> | |
| <configuration> | |
| <java> | |
| <googleJavaFormat> | |
| <version>1.7</version> | |
| <style>AOSP</style> | |
| </googleJavaFormat> | |
| <!-- \# refers to the static imports --> | |
| <importOrder> | |
| <order>org.apache.paimon,org.apache.paimon.shade,,javax,java,scala,\#</order> | |
| </importOrder> | |
| <!-- Replace illegal imports with shaded versions --> | |
| <replaceRegex> | |
| <name>Replace Guava imports</name> | |
| <searchRegex>import com\.google\.common\.([^;]+);</searchRegex> | |
| <replacement>import org.apache.paimon.shade.guava30.com.google.common.$1;</replacement> | |
| </replaceRegex> | |
| <replaceRegex> | |
| <name>Replace Jackson imports</name> | |
| <searchRegex>import com\.fasterxml\.jackson\.([^;]+);</searchRegex> | |
| <replacement>import org.apache.paimon.shade.jackson2.com.fasterxml.jackson.$1;</replacement> | |
| </replaceRegex> | |
| <licenseHeader> | |
| <!-- replace it with ${project.rootDirectory} after maven 4.0.0, see MNG-7038 --> | |
| <file>${maven.multiModuleProjectDirectory}/copyright.txt</file> | |
| <delimiter>${spotless.delimiter}</delimiter> | |
| </licenseHeader> | |
| </java> | |
| <scala> | |
| <!-- make it works `// spotless:off` --> | |
| <toggleOffOn /> | |
| <scalafmt> | |
| <version>3.10.2</version> | |
| <file>${maven.multiModuleProjectDirectory}/.scalafmt.conf</file> | |
| </scalafmt> | |
| <licenseHeader> | |
| <file>${maven.multiModuleProjectDirectory}/copyright.txt</file> | |
| <delimiter>${spotless.delimiter}</delimiter> | |
| </licenseHeader> | |
| </scala> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <id>spotless-check</id> | |
| <phase>validate</phase> | |
| <goals> | |
| <goal>check</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-javadoc-plugin</artifactId> | |
| <version>3.11.2</version><!--$NO-MVN-MAN-VER$--> | |
| <configuration> | |
| <quiet>true</quiet> | |
| <detectOfflineLinks>false</detectOfflineLinks> | |
| <source>8</source> | |
| <failOnError>false</failOnError> | |
| <additionalJOptions> | |
| <additionalJOption>-Xdoclint:none</additionalJOption> | |
| </additionalJOptions> | |
| </configuration> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-enforcer-plugin</artifactId> | |
| <version>3.0.0-M1</version> | |
| </plugin> | |
| <!-- Pin the version of the maven shade plugin --> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-shade-plugin</artifactId> | |
| <version>3.5.3</version> | |
| </plugin> | |
| <!-- configure scala style --> | |
| <plugin> | |
| <groupId>org.scalastyle</groupId> | |
| <artifactId>scalastyle-maven-plugin</artifactId> | |
| <version>1.0.0</version> | |
| <executions> | |
| <execution> | |
| <goals> | |
| <goal>check</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| <configuration> | |
| <verbose>false</verbose> | |
| <failOnViolation>true</failOnViolation> | |
| <includeTestSourceDirectory>true</includeTestSourceDirectory> | |
| <failOnWarning>false</failOnWarning> | |
| <sourceDirectory>${basedir}/src/main/scala</sourceDirectory> | |
| <testSourceDirectory>${basedir}/src/test/scala</testSourceDirectory> | |
| <outputFile>${project.basedir}/target/scalastyle-output.xml</outputFile> | |
| <inputEncoding>UTF-8</inputEncoding> | |
| <outputEncoding>UTF-8</outputEncoding> | |
| </configuration> | |
| </plugin> | |
| <plugin> | |
| <!-- Inherited from Apache parent, but not actually used. Disable to reduce noise. --> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-site-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>attach-descriptor</id> | |
| <phase>none</phase> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.codehaus.mojo</groupId> | |
| <artifactId>exec-maven-plugin</artifactId> | |
| <version>3.1.0</version> | |
| <inherited>false</inherited> | |
| <executions> | |
| <execution> | |
| <id>check-license</id> | |
| <!-- manually called --> | |
| <phase>none</phase> | |
| <goals> | |
| <goal>java</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| <configuration> | |
| <mainClass>org.apache.paimon.tools.ci.licensecheck.LicenseChecker</mainClass> | |
| <includePluginDependencies>true</includePluginDependencies> | |
| <includeProjectDependencies>false</includeProjectDependencies> | |
| </configuration> | |
| <dependencies> | |
| <dependency> | |
| <groupId>org.apache.paimon</groupId> | |
| <artifactId>paimon-ci-tools</artifactId> | |
| <version>${project.version}</version> | |
| </dependency> | |
| </dependencies> | |
| </plugin> | |
| </plugins> | |
| </pluginManagement> | |
| <extensions> | |
| <extension> | |
| <groupId>kr.motd.maven</groupId> | |
| <artifactId>os-maven-plugin</artifactId> | |
| <version>1.7.1</version> | |
| </extension> | |
| </extensions> | |
| </build> | |
| <!-- | |
| Uncomment the following "repositories" tag if your maven fails to download paimon-shade snapshot files. | |
| We comment these tags by default because downloading from apache repositories is very slow for both github and developers. | |
| --> | |
| <!-- | |
| <repositories> | |
| <repository> | |
| <id>central</id> | |
| <url>https://repo.maven.apache.org/maven2</url> | |
| <snapshots> | |
| <enabled>false</enabled> | |
| </snapshots> | |
| </repository> | |
| <repository> | |
| <id>apache-releases</id> | |
| <name>apache releases</name> | |
| <url>https://repository.apache.org/content/repositories/releases/</url> | |
| <snapshots> | |
| <enabled>false</enabled> | |
| </snapshots> | |
| </repository> | |
| <repository> | |
| <id>apache-snapshots</id> | |
| <name>apache snapshots</name> | |
| <url>https://repository.apache.org/content/repositories/snapshots/</url> | |
| <releases> | |
| <enabled>false</enabled> | |
| </releases> | |
| </repository> | |
| </repositories> | |
| --> | |
| </project> |