blob: fa7c27e4e98319b1b98a1bf6966fa092fdc0abd2 [file]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>be-java-extensions</artifactId>
<groupId>org.apache.doris</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>paimon-scanner</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.doris</groupId>
<artifactId>java-common</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-common</artifactId>
</dependency>
<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-hive-connector-3.1</artifactId>
</dependency>
<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-format</artifactId>
</dependency>
<!--
Paimon OSS/S3 FileIO plugins. These register org.apache.paimon.fs.FileIOLoader
service providers (paimon-s3 -> S3Loader, paimon-jindo -> JindoLoader) used to read
object-store-backed Paimon tables (e.g. DLF REST catalogs over OSS). They MUST be
bundled here, alongside the FileIOLoader interface that lives in paimon-common: when a
BE-side read resolves the latest snapshot from the filesystem, RESTTokenFileIO.fileIO()
calls FileIO.get() -> ServiceLoader.load(FileIOLoader.class, FileIOLoader's classloader),
which eagerly instantiates every registered provider. A provider and the FileIOLoader
interface it implements must be reachable from the same classloader. These plugins used
to sit on the shared preload-extensions (JVM app) classpath, which does NOT carry
paimon-common's FileIOLoader; since JniScannerClassLoader is parent-first, the app-loaded
S3Loader/JindoLoader could not resolve the child-only interface -> NoClassDefFoundError:
FileIOLoader. Co-locating them here keeps the whole FileIO SPI in one classloader; the
assembly's metaInf-services handler merges their service files with paimon-common's
(local/hadoop) into one complete provider list.
-->
<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-s3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-jindo</artifactId>
</dependency>
</dependencies>
<build>
<finalName>paimon-scanner</finalName>
<directory>${project.basedir}/target/</directory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/resources/package.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass></mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>