blob: 1e5f9bb2b8b50361752be391fc5bc93309dc1f5b [file] [log] [blame]
<?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>33</version>
</parent>
<groupId>org.apache.gluten</groupId>
<artifactId>gluten-parent</artifactId>
<version>1.6.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Gluten Parent Pom</name>
<description>Apache Gluten(incubating)</description>
<url>https://github.com/apache/incubator-gluten.git</url>
<organization>
<name>Apache</name>
<url>https://gluten.apache.org</url>
</organization>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<modules>
<module>gluten-core</module>
<module>gluten-substrait</module>
<module>gluten-ui</module>
<module>package</module>
<module>shims</module>
<module>gluten-ras</module>
</modules>
<scm>
<connection>scm:git:git://github.com/apache/incubator-gluten.git</connection>
<developerConnection>scm:git:ssh://github.com:apache/incubator-gluten.git</developerConnection>
<url>https://github.com/apache/incubator-gluten/tree/main</url>
</scm>
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<caffeine.version>2.9.3</caffeine.version>
<scala.binary.version>2.12</scala.binary.version>
<scala.version>2.12.15</scala.version>
<scala-xml.version>2.1.0</scala-xml.version>
<javax.servlet.version>3.1.0</javax.servlet.version>
<spark.major.version>3</spark.major.version>
<sparkbundle.version>3.5</sparkbundle.version>
<spark.plain.version>35</spark.plain.version>
<spark.version>3.5.5</spark.version>
<sparkshim.artifactId>spark-sql-columnar-shims-spark35</sparkshim.artifactId>
<iceberg.version>1.5.0</iceberg.version>
<paimon.version>1.2.0</paimon.version>
<delta.package.name>delta-core</delta.package.name>
<delta.version>2.4.0</delta.version>
<delta.binary.version>24</delta.binary.version>
<celeborn.version>0.6.1</celeborn.version>
<uniffle.version>0.9.2</uniffle.version>
<arrow.version>15.0.0</arrow.version>
<arrow-gluten.version>15.0.0-gluten</arrow-gluten.version>
<arrow-memory.artifact>arrow-memory-unsafe</arrow-memory.artifact>
<hadoop.version>2.7.4</hadoop.version>
<antlr4.version>4.9.3</antlr4.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<project.prefix>spark-sql-columnar</project.prefix>
<jar.assembly.name.prefix>gluten</jar.assembly.name.prefix>
<os-maven-plugin.version>1.5.0.Final</os-maven-plugin.version>
<!--
Will be overwritten by the profile on different platforms.
Otherwise, it is built from an unsupported platform.
-->
<os.full.name>unknown</os.full.name>
<!-- To build built-in backend c++ codes -->
<scala.recompile.mode>all</scala.recompile.mode>
<!-- For unit tests -->
<fasterxml.version>2.15.0</fasterxml.version>
<junit.version>4.13.1</junit.version>
<flexmark.version>0.62.2</flexmark.version>
<!-- Package name to use when relocating shaded classes -->
<gluten.shade.packageName>org.apache.gluten.shaded</gluten.shade.packageName>
<!-- The original protobuf version -->
<protobuf.version>3.23.4</protobuf.version>
<guava.version>32.0.1-jre</guava.version>
<!--spotless-->
<spotless.version>2.27.2</spotless.version>
<spotless.scalafmt.version>3.8.3</spotless.scalafmt.version>
<spotless.delimiter>package</spotless.delimiter>
<!-- spotless:off -->
<spotless.license.header>
/*
* 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.
*/
</spotless.license.header>
<!-- spotless:on -->
<!-- plugin version-->
<build-helper-maven-plugin.version>3.6.0</build-helper-maven-plugin.version>
<scala.compiler.version>4.8.0</scala.compiler.version>
<maven.compiler.plugin>3.12.1</maven.compiler.plugin>
<maven.jar.plugin>3.2.2</maven.jar.plugin>
<scalastyle.version>1.0.0</scalastyle.version>
<scalatest-maven-plugin.version>2.2.0</scalatest-maven-plugin.version>
<argLine/>
<!-- Required since there is extensive setting of spark home through argLine-->
<extraJavaTestArgs>
-XX:+IgnoreUnrecognizedVMOptions
<!-- For compatibility with java 8 and 11-->
--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
-Djdk.reflect.useDirectMethodHandle=false
-Dio.netty.tryReflectionSetAccessible=true
</extraJavaTestArgs>
<log4j.conf>file:src/test/resources/log4j2.properties</log4j.conf>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>${caffeine.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-vector</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client-runtime</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client-runtime</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-catalyst_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.apache.arrow</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client-runtime</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-yarn_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<scope>provided</scope>
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<type>test-jar</type>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client-runtime</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-catalyst_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<type>test-jar</type>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.apache.arrow</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<type>test-jar</type>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.apache.arrow</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.delta</groupId>
<artifactId>${delta.package.name}_${scala.binary.version}</artifactId>
<version>${delta.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.antlr</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_${scala.binary.version}</artifactId>
<version>3.2.16</version>
<scope>test</scope>
</dependency>
<!-- Fasterxml -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${fasterxml.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${fasterxml.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${fasterxml.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${fasterxml.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-guava</artifactId>
<version>${fasterxml.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-scala_${scala.binary.version}</artifactId>
<version>${fasterxml.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-collection-compat_${scala.binary.version}</artifactId>
<version>2.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-all</artifactId>
<version>${flexmark.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven.jar.plugin}</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>${scala.binary.version}</classifier>
<classifier>${sparkbundle.version}</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin}</version>
<configuration>
<encoding>UTF-8</encoding>
<maxmem>1024m</maxmem>
<fork>true</fork>
<compilerArgs>
<arg>-Xlint:all,-serial,-path</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<argLine>${argLine} ${extraJavaTestArgs}</argLine>
<failIfNoSpecifiedTests>false</failIfNoSpecifiedTests>
</configuration>
</plugin>
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<version>${scalatest-maven-plugin.version}</version>
<configuration>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<testFailureIgnore>${maven.test.failure.ignore}</testFailureIgnore>
<junitxml>.</junitxml>
<argLine>${argLine} ${extraJavaTestArgs}</argLine>
<systemProperties>
<log4j.configurationFile>${log4j.conf}</log4j.configurationFile>
</systemProperties>
</configuration>
<executions>
<execution>
<id>test</id>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>${scala.compiler.version}</version>
<configuration>
<compilerPlugins>
<compilerPlugin>
<groupId>org.wartremover</groupId>
<artifactId>wartremover_${scala.binary.version}</artifactId>
<version>3.0.6</version>
</compilerPlugin>
</compilerPlugins>
<dependencies>
<dependency>
<groupId>io.github.zhztheplayer.scalawarts</groupId>
<artifactId>scalawarts_${scala.binary.version}</artifactId>
<version>0.1.2</version>
</dependency>
</dependencies>
<recompileMode>${scala.recompile.mode}</recompileMode>
<args>
<arg>-Wconf:msg=While parsing annotations in:silent,any:e</arg>
<arg>-Ywarn-unused:imports</arg>
<arg>-deprecation</arg>
<arg>-feature</arg>
<arg>-Wconf:cat=deprecation:wv,any:e</arg>
<arg>-P:wartremover:traverser:io.github.zhztheplayer.scalawarts.InheritFromCaseClass</arg>
</args>
</configuration>
<executions>
<execution>
<id>scala-compile-first</id>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
<phase>process-resources</phase>
</execution>
<execution>
<id>scala-test-compile-first</id>
<goals>
<goal>testCompile</goal>
</goals>
<phase>process-test-resources</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<failOnViolation>true</failOnViolation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<sourceDirectories>
<directory>${project.basedir}/src/main/java</directory>
<directory>${project.basedir}/src/main/scala</directory>
</sourceDirectories>
<testSourceDirectories>
<directory>${project.basedir}/src/test/java</directory>
</testSourceDirectories>
<configLocation>dev/checkstyle.xml</configLocation>
<outputFile>${project.basedir}/target/checkstyle-output.xml</outputFile>
<inputEncoding>UTF-8</inputEncoding>
<outputEncoding>UTF-8</outputEncoding>
</configuration>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.29</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.scalastyle</groupId>
<artifactId>scalastyle-maven-plugin</artifactId>
<version>${scalastyle.version}</version>
<configuration>
<verbose>false</verbose>
<failOnViolation>true</failOnViolation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<failOnWarning>false</failOnWarning>
<sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory>
<outputFile>${project.basedir}/scalastyle-output.xml</outputFile>
<outputEncoding>UTF-8</outputEncoding>
<configLocation>dev/scalastyle-config.xml</configLocation>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless.version}</version>
<configuration>
<java>
<toggleOffOn/>
<googleJavaFormat>
<version>1.7</version>
</googleJavaFormat>
<!-- \# refers to the static imports -->
<importOrder>
<order>org.apache.gluten,io.substrait.spark,,javax,java,scala,\#</order>
</importOrder>
<removeUnusedImports/>
<licenseHeader>
<content>${spotless.license.header}</content>
<delimiter>${spotless.delimiter}</delimiter>
</licenseHeader>
<includes>
<include>src/main/java/**/*.java</include>
<include>src/test/java/**/*.java</include>
<include>src-*/main/java/**/*.java</include>
<include>src-*/test/java/**/*.java</include>
</includes>
</java>
<scala>
<toggleOffOn/>
<scalafmt>
<version>${spotless.scalafmt.version}</version>
<scalaMajorVersion>${scala.binary.version}</scalaMajorVersion>
<file>.scalafmt.conf</file>
</scalafmt>
<licenseHeader>
<content>${spotless.license.header}</content>
<delimiter>${spotless.delimiter}</delimiter>
</licenseHeader>
<includes>
<include>src/main/scala/**/*.scala</include>
<include>src/test/scala/**/*.scala</include>
<include>src-*/main/scala/**/*.scala</include>
<include>src-*/test/scala/**/*.scala</include>
</includes>
</scala>
<pom>
<toggleOffOn>
<off>spotless:off</off>
<on>spotless:on</on>
</toggleOffOn>
<includes>
<include>pom.xml</include>
</includes>
<sortPom>
<encoding>UTF-8</encoding>
<keepBlankLines>true</keepBlankLines>
<nrOfIndentSpace>2</nrOfIndentSpace>
<indentBlankLines>false</indentBlankLines>
<expandEmptyElements>false</expandEmptyElements>
</sortPom>
</pom>
</configuration>
<executions>
<execution>
<id>spotless-check</id>
<goals>
<goal>check</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${build-helper-maven-plugin.version}</version>
<!--We use build-helper-maven-plugin rather than maven-resources-plugin-->
<!--to add base resources (generated-resources and other common extended resource folders).-->
<!--So submodules could easily add their own resources through maven-resources-plugin-->
<!--which is more compatible with Intellij IDEA (E.g., `targetPath` can be respected by-->
<!--IDEA with maven-resources-plugin while it is not working with build-helper-maven-plugin).-->
<executions>
<execution>
<id>add-common-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-spark${spark.plain.version}/main/java</source>
<source>${project.basedir}/src-spark${spark.plain.version}/main/scala</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-common-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-spark${spark.plain.version}/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-common-test-sources</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-spark${spark.plain.version}/test/scala</source>
<source>${project.basedir}/src-spark${spark.plain.version}/test/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-common-test-resources</id>
<goals>
<goal>add-test-resource</goal>
</goals>
<phase>generate-test-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-spark${spark.plain.version}/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-generated-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<resource>
<!-- Include the properties file to provide the build information. -->
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.1</version>
</plugin>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>${antlr4.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.3.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>3.6.3</version>
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.15.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
</plugin>
</plugins>
<extensions>
<!-- provides os.detected.classifier (i.e. linux-x86_64, osx-x86_64) property -->
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>${os-maven-plugin.version}</version>
</extension>
</extensions>
</build>
<profiles>
<profile>
<id>scala-2.12</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--
SPARK-34774 Add this property to ensure change-scala-version.sh can replace the public `scala.version`
property correctly.
-->
<scala.version>2.12.15</scala.version>
<scala.binary.version>2.12</scala.binary.version>
</properties>
</profile>
<profile>
<id>scala-2.13</id>
<properties>
<scala.version>2.13.8</scala.version>
<scala.binary.version>2.13</scala.binary.version>
<spotless.scalafmt.version>3.8.3</spotless.scalafmt.version>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<configuration>
<compilerPlugins>
<compilerPlugin>
<groupId>org.wartremover</groupId>
<artifactId>wartremover_${scala.binary.version}</artifactId>
<version>3.0.6</version>
</compilerPlugin>
</compilerPlugins>
<dependencies>
<dependency>
<groupId>io.github.zhztheplayer.scalawarts</groupId>
<artifactId>scalawarts_${scala.binary.version}</artifactId>
<version>0.1.2</version>
</dependency>
</dependencies>
<recompileMode>${scala.recompile.mode}</recompileMode>
<args>
<arg>-unchecked</arg>
<arg>-deprecation</arg>
<arg>-feature</arg>
<arg>-explaintypes</arg>
<arg>-target:jvm-1.8</arg>
<arg>-Wconf:cat=deprecation:wv,any:e</arg>
<arg>-Wunused:imports</arg>
<!--
TODO(SPARK-33805): Undo the corresponding deprecated usage suppression rule after fixed
-->
<arg>-Wconf:cat=scaladoc:wv</arg>
<arg>-Wconf:cat=lint-multiarg-infix:wv</arg>
<arg>-Wconf:cat=other-nullary-override:wv</arg>
<!--
SPARK-33775 Suppress compilation warnings that contain the following contents.
TODO(SPARK-33805): Undo the corresponding deprecated usage suppression rule after fixed.
-->
<arg>-Wconf:msg=^(?=.*?method|value|type|object|trait|inheritance)(?=.*?deprecated)(?=.*?since 2.13).+$:s</arg>
<arg>-Wconf:msg=^(?=.*?Widening conversion from)(?=.*?is deprecated because it loses precision).+$:s</arg>
<arg>-Wconf:msg=Auto-application to \`\(\)\` is deprecated:s</arg>
<arg>-Wconf:msg=method with a single empty parameter list overrides method without any parameter list:s</arg>
<arg>-Wconf:msg=method without a parameter list overrides a method with a single empty one:s</arg>
<!--
SPARK-35574 Prevent the recurrence of compilation warnings related to
`procedure syntax is deprecated`
-->
<arg>-Wconf:cat=deprecation&amp;msg=procedure syntax is deprecated:e</arg>
<!--
SPARK-35496 Upgrade Scala to 2.13.7 and suppress:
1. `The outer reference in this type test cannot be checked at run time`
2. `the type test for pattern TypeA cannot be checked at runtime because it
has type parameters eliminated by erasure`
3. `abstract type TypeA in type pattern Seq[TypeA] (the underlying of
Seq[TypeA]) is unchecked since it is eliminated by erasure`
4. `fruitless type test: a value of TypeA cannot also be a TypeB`
-->
<arg>-Wconf:cat=unchecked&amp;msg=outer reference:s</arg>
<arg>-Wconf:cat=unchecked&amp;msg=eliminated by erasure:s</arg>
<arg>-Wconf:msg=^(?=.*?a value of type)(?=.*?cannot also be).+$:s</arg>
<arg>-P:wartremover:traverser:io.github.zhztheplayer.scalawarts.InheritFromCaseClass</arg>
</args>
</configuration>
<executions>
<execution>
<id>scala-compile-first</id>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
<phase>process-resources</phase>
</execution>
<execution>
<id>scala-test-compile-first</id>
<goals>
<goal>testCompile</goal>
</goals>
<phase>process-test-resources</phase>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>java-8</id>
<activation>
<jdk>1.8</jdk>
</activation>
<properties>
<java.version>1.8</java.version>
</properties>
</profile>
<profile>
<id>java-11</id>
<activation>
<jdk>11</jdk>
</activation>
<properties>
<java.version>11</java.version>
<caffeine.version>3.1.8</caffeine.version>
</properties>
</profile>
<profile>
<id>java-17</id>
<activation>
<jdk>17</jdk>
</activation>
<properties>
<java.version>17</java.version>
<caffeine.version>3.1.8</caffeine.version>
</properties>
</profile>
<profile>
<id>spark-3.2</id>
<properties>
<sparkbundle.version>3.2</sparkbundle.version>
<spark.plain.version>32</spark.plain.version>
<sparkshim.artifactId>spark-sql-columnar-shims-spark32</sparkshim.artifactId>
<spark.version>3.2.2</spark.version>
<iceberg.version>1.3.1</iceberg.version>
<delta.package.name>delta-core</delta.package.name>
<delta.version>2.0.1</delta.version>
<delta.binary.version>20</delta.binary.version>
<antlr4.version>4.8</antlr4.version>
<hudi.version>0.15.0</hudi.version>
<slf4j.version>1.7.30</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>spark-3.3</id>
<properties>
<sparkbundle.version>3.3</sparkbundle.version>
<spark.plain.version>33</spark.plain.version>
<sparkshim.artifactId>spark-sql-columnar-shims-spark33</sparkshim.artifactId>
<spark.version>3.3.1</spark.version>
<iceberg.version>1.5.0</iceberg.version>
<delta.package.name>delta-core</delta.package.name>
<delta.version>2.3.0</delta.version>
<delta.binary.version>23</delta.binary.version>
<antlr4.version>4.8</antlr4.version>
<hudi.version>0.15.0</hudi.version>
<slf4j.version>1.7.32</slf4j.version>
<log4j.version>2.17.2</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>spark-3.4</id>
<properties>
<sparkbundle.version>3.4</sparkbundle.version>
<spark.plain.version>34</spark.plain.version>
<sparkshim.artifactId>spark-sql-columnar-shims-spark34</sparkshim.artifactId>
<spark.version>3.4.4</spark.version>
<iceberg.version>1.7.1</iceberg.version>
<delta.package.name>delta-core</delta.package.name>
<delta.version>2.4.0</delta.version>
<delta.binary.version>24</delta.binary.version>
<antlr4.version>4.9.3</antlr4.version>
<hudi.version>0.15.0</hudi.version>
<slf4j.version>2.0.6</slf4j.version>
<log4j.version>2.19.0</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>spark-3.5</id>
<properties>
<sparkbundle.version>3.5</sparkbundle.version>
<spark.plain.version>35</spark.plain.version>
<sparkshim.artifactId>spark-sql-columnar-shims-spark35</sparkshim.artifactId>
<spark.version>3.5.5</spark.version>
<iceberg.version>1.8.0</iceberg.version>
<delta.package.name>delta-spark</delta.package.name>
<delta.version>3.3.1</delta.version>
<delta.binary.version>33</delta.binary.version>
<hudi.version>0.15.0</hudi.version>
<fasterxml.version>2.15.1</fasterxml.version>
<hadoop.version>3.3.4</hadoop.version>
<antlr4.version>4.9.3</antlr4.version>
<slf4j.version>2.0.7</slf4j.version>
<log4j.version>2.20.0</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>${log4j.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>spark-4.0</id>
<properties>
<sparkbundle.version>4.0</sparkbundle.version>
<sparkshim.artifactId>spark-sql-columnar-shims-spark40</sparkshim.artifactId>
<spark.version>4.0.1</spark.version>
<iceberg.version>1.5.0</iceberg.version>
<delta.package.name>delta-spark</delta.package.name>
<delta.version>3.3.1</delta.version>
<delta.binary.version>33</delta.binary.version>
<hudi.version>0.15.0</hudi.version>
<fasterxml.version>2.15.1</fasterxml.version>
<hadoop.version>3.3.4</hadoop.version>
<antlr4.version>4.9.3</antlr4.version>
<guava.version>33.4.0-jre</guava.version>
<slf4j.version>2.0.16</slf4j.version>
<log4j.version>2.24.3</log4j.version>
<arrow.version>18.1.0</arrow.version>
<arrow-gluten.version>18.1.0</arrow-gluten.version>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>${log4j.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-java-17</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireActiveProfile>
<!-- Spark 4.0 requires Java 17+ -->
<profiles>java-17</profiles>
<message>"-P spark-4.0" requires JDK 17</message>
</requireActiveProfile>
</rules>
</configuration>
</execution>
<execution>
<id>enforce-scala-213</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireActiveProfile>
<!-- Spark 4.0 requires Scala 2.13 -->
<profiles>scala-2.13</profiles>
<message>"-P spark-4.0" requires Scala 2.13</message>
</requireActiveProfile>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>hadoop-2.7.4</id>
<properties>
<hadoop.version>2.7.4</hadoop.version>
</properties>
</profile>
<profile>
<id>hadoop-3.2</id>
<properties>
<hadoop.version>3.2.0</hadoop.version>
</properties>
</profile>
<profile>
<id>hadoop-3.3</id>
<properties>
<hadoop.version>3.3.1</hadoop.version>
</properties>
</profile>
<profile>
<id>dataproc-2.2</id>
<properties>
<hadoop.version>3.3.6</hadoop.version>
</properties>
</profile>
<profile>
<id>emr-6.3.0</id>
<properties>
<hadoop.version>3.2.2</hadoop.version>
</properties>
</profile>
<profile>
<id>arrow-netty</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<id>arrow-netty</id>
<arrow-memory.artifact>arrow-memory-netty</arrow-memory.artifact>
</properties>
</profile>
<profile>
<id>qualification-tool</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>tools/qualification-tool</module>
</modules>
</profile>
<profile>
<id>backends-clickhouse</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>backends-clickhouse</module>
</modules>
<properties>
<backend_type>clickhouse</backend_type>
</properties>
</profile>
<profile>
<id>celeborn</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>gluten-celeborn</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-celeborn-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-celeborn/main/scala</source>
<source>${project.basedir}/src-celeborn/main/java</source>
<source>${project.basedir}/src-celeborn-spark${spark.plain.version}/main/scala</source>
<source>${project.basedir}/src-celeborn-spark${spark.plain.version}/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-celeborn-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-celeborn/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-celeborn-spark${spark.plain.version}/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-celeborn-test-sources</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-celeborn/test/scala</source>
<source>${project.basedir}/src-celeborn/test/java</source>
<source>${project.basedir}/src-celeborn-spark${spark.plain.version}/test/scala</source>
<source>${project.basedir}/src-celeborn-spark${spark.plain.version}/test/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-celeborn-test-resources</id>
<goals>
<goal>add-test-resource</goal>
</goals>
<phase>generate-test-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-celeborn/test/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-celeborn-spark${spark.plain.version}/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>uniffle</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>gluten-uniffle</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-uniffle-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-uniffle/main/scala</source>
<source>${project.basedir}/src-uniffle/main/java</source>
<source>${project.basedir}/src-uniffle-spark${spark.plain.version}/main/scala</source>
<source>${project.basedir}/src-uniffle-spark${spark.plain.version}/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-uniffle-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-uniffle/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-uniffle-spark${spark.plain.version}/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-uniffle-test-sources</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-uniffle/test/scala</source>
<source>${project.basedir}/src-uniffle/test/java</source>
<source>${project.basedir}/src-uniffle-spark${spark.plain.version}/test/scala</source>
<source>${project.basedir}/src-uniffle-spark${spark.plain.version}/test/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-uniffle-test-resources</id>
<goals>
<goal>add-test-resource</goal>
</goals>
<phase>generate-test-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-uniffle/test/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-uniffle-spark${spark.plain.version}/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>delta</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>gluten-delta</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-delta-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-delta/main/scala</source>
<source>${project.basedir}/src-delta/main/java</source>
<source>${project.basedir}/src-delta-spark${spark.plain.version}/main/scala</source>
<source>${project.basedir}/src-delta-spark${spark.plain.version}/main/java</source>
<source>${project.basedir}/src-delta${delta.binary.version}/main/scala</source>
<source>${project.basedir}/src-delta${delta.binary.version}/main/java</source>
<source>${project.basedir}/src-delta${delta.binary.version}-spark${spark.plain.version}/main/scala</source>
<source>${project.basedir}/src-delta${delta.binary.version}-spark${spark.plain.version}/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-delta-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<!--Don't place multiple `directory` lines under the same `resource` entry.-->
<!--IDEA recognizes this kind of usage while Maven doesn't.-->
<resource>
<directory>${project.basedir}/src-delta/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-delta-spark${spark.plain.version}/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-delta${delta.binary.version}/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-delta${delta.binary.version}-spark${spark.plain.version}/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-delta-test-sources</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-delta/test/scala</source>
<source>${project.basedir}/src-delta/test/java</source>
<source>${project.basedir}/src-delta-spark${spark.plain.version}/test/scala</source>
<source>${project.basedir}/src-delta-spark${spark.plain.version}/test/java</source>
<source>${project.basedir}/src-delta${delta.binary.version}/test/scala</source>
<source>${project.basedir}/src-delta${delta.binary.version}/test/java</source>
<source>${project.basedir}/src-delta${delta.binary.version}-spark${spark.plain.version}/test/scala</source>
<source>${project.basedir}/src-delta${delta.binary.version}-spark${spark.plain.version}/test/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-delta-test-resources</id>
<goals>
<goal>add-test-resource</goal>
</goals>
<phase>generate-test-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-delta/test/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-delta-spark${spark.plain.version}/test/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-delta${delta.binary.version}/test/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-delta${delta.binary.version}-spark${spark.plain.version}/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>iceberg</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>gluten-iceberg</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-iceberg-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-iceberg/main/scala</source>
<source>${project.basedir}/src-iceberg/main/java</source>
<source>${project.basedir}/src-iceberg-spark${spark.plain.version}/main/scala</source>
<source>${project.basedir}/src-iceberg-spark${spark.plain.version}/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-iceberg-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-iceberg/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-iceberg-spark${spark.plain.version}/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-iceberg-test-sources</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-iceberg/test/scala</source>
<source>${project.basedir}/src-iceberg/test/java</source>
<source>${project.basedir}/src-iceberg-spark${spark.plain.version}/test/scala</source>
<source>${project.basedir}/src-iceberg-spark${spark.plain.version}/test/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-iceberg-test-resources</id>
<goals>
<goal>add-test-resource</goal>
</goals>
<phase>generate-test-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-iceberg/test/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-iceberg-spark${spark.plain.version}/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>hudi</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>gluten-hudi</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-hudi-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-hudi/main/scala</source>
<source>${project.basedir}/src-hudi/main/java</source>
<source>${project.basedir}/src-hudi-spark${spark.plain.version}/main/scala</source>
<source>${project.basedir}/src-hudi-spark${spark.plain.version}/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-hudi-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-hudi/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-hudi-spark${spark.plain.version}/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-hudi-test-sources</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-hudi/test/scala</source>
<source>${project.basedir}/src-hudi/test/java</source>
<source>${project.basedir}/src-hudi-spark${spark.plain.version}/test/scala</source>
<source>${project.basedir}/src-hudi-spark${spark.plain.version}/test/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-hudi-test-resources</id>
<goals>
<goal>add-test-resource</goal>
</goals>
<phase>generate-test-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-hudi/test/resources</directory>
</resource>
<resource>
<directory>${project.basedir}/src-hudi-spark${spark.plain.version}/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>paimon</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>gluten-paimon</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-paimon-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-paimon/main/scala</source>
<source>${project.basedir}/src-paimon/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-paimon-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-paimon/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-paimon-test-sources</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-paimon/test/scala</source>
<source>${project.basedir}/src-paimon/test/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-paimon-test-resources</id>
<goals>
<goal>add-test-resource</goal>
</goals>
<phase>generate-test-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-paimon/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>backends-velox</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>gluten-arrow</module>
<module>backends-velox</module>
</modules>
<properties>
<backend_type>velox</backend_type>
</properties>
</profile>
<profile>
<id>kafka</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>gluten-kafka</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-kafka-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-kafka/main/scala</source>
<source>${project.basedir}/src-kafka/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-kafka-resources</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-kafka/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>add-kafka-test-sources</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>generate-test-sources</phase>
<configuration>
<sources>
<source>${project.basedir}/src-kafka/test/scala</source>
<source>${project.basedir}/src-kafka/test/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-kafka-test-resources</id>
<goals>
<goal>add-test-resource</goal>
</goals>
<phase>generate-test-resources</phase>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src-kafka/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>spark-ut</id>
<modules>
<module>gluten-ut</module>
</modules>
</profile>
<profile>
<!-- this profile for apache release. -->
<id>apache-release</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<dryRun>false</dryRun>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<configuration>
<skip>false</skip>
<interactive>true</interactive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>source-release-assembly</id>
<goals>
<goal>single</goal>
</goals>
<phase>none</phase>
<configuration>
<tarLongFileMode>gnu</tarLongFileMode>
<runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
<appendAssemblyId>true</appendAssemblyId>
<descriptors>
<descriptor>src/assembly/source-assembly.xml</descriptor>
</descriptors>
<finalName>apache-gluten-${project.version}</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- Profiles for different platforms -->
<profile>
<id>darwin-x86</id>
<activation>
<os>
<family>mac</family>
<arch>x86_64</arch>
</os>
</activation>
<properties>
<platform>darwin</platform>
<arch>x86_64</arch>
<os.full.name>${platform}_${arch}</os.full.name>
</properties>
</profile>
<profile>
<id>darwin-aarch64</id>
<activation>
<os>
<family>mac</family>
<arch>aarch64</arch>
</os>
</activation>
<properties>
<platform>darwin</platform>
<arch>aarch64</arch>
<os.full.name>${platform}_${arch}</os.full.name>
</properties>
</profile>
<profile>
<id>linux-amd64</id>
<activation>
<os>
<family>Linux</family>
<arch>amd64</arch>
</os>
</activation>
<properties>
<platform>linux</platform>
<arch>amd64</arch>
<os.full.name>${platform}_${arch}</os.full.name>
</properties>
</profile>
<profile>
<id>linux-aarch64</id>
<activation>
<os>
<family>Linux</family>
<arch>aarch64</arch>
</os>
</activation>
<properties>
<platform>linux</platform>
<arch>aarch64</arch>
<os.full.name>${platform}_${arch}</os.full.name>
</properties>
</profile>
</profiles>
</project>