| <?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.datafusion</groupId> |
| <artifactId>datafusion-java-parent</artifactId> |
| <version>0.2.0-SNAPSHOT</version> |
| </parent> |
| |
| <artifactId>datafusion-java</artifactId> |
| <packaging>jar</packaging> |
| |
| <name>Apache DataFusion Java</name> |
| |
| <properties> |
| <!-- Which cargo build profile (debug/release) the bundled native |
| library is copied from. Override with -Ddatafusion.native.profile=release. --> |
| <datafusion.native.profile>debug</datafusion.native.profile> |
| </properties> |
| |
| <dependencies> |
| <dependency> |
| <groupId>org.junit.jupiter</groupId> |
| <artifactId>junit-jupiter</artifactId> |
| <scope>test</scope> |
| </dependency> |
| <dependency> |
| <groupId>org.apache.arrow</groupId> |
| <artifactId>arrow-vector</artifactId> |
| </dependency> |
| <dependency> |
| <groupId>org.apache.arrow</groupId> |
| <artifactId>arrow-c-data</artifactId> |
| </dependency> |
| <dependency> |
| <groupId>org.apache.arrow</groupId> |
| <artifactId>arrow-memory-netty</artifactId> |
| <scope>runtime</scope> |
| </dependency> |
| <dependency> |
| <groupId>com.google.protobuf</groupId> |
| <artifactId>protobuf-java</artifactId> |
| </dependency> |
| <dependency> |
| <groupId>org.apache.avro</groupId> |
| <artifactId>avro</artifactId> |
| <scope>test</scope> |
| </dependency> |
| <dependency> |
| <groupId>io.substrait</groupId> |
| <artifactId>core</artifactId> |
| <scope>test</scope> |
| </dependency> |
| </dependencies> |
| |
| <build> |
| <extensions> |
| <extension> |
| <groupId>kr.motd.maven</groupId> |
| <artifactId>os-maven-plugin</artifactId> |
| <version>1.7.1</version> |
| </extension> |
| </extensions> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-surefire-plugin</artifactId> |
| <configuration> |
| <argLine>--add-opens=java.base/java.nio=ALL-UNNAMED</argLine> |
| </configuration> |
| </plugin> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-antrun-plugin</artifactId> |
| <executions> |
| <execution> |
| <id>copy-native-lib</id> |
| <phase>process-classes</phase> |
| <goals><goal>run</goal></goals> |
| <configuration> |
| <target> |
| <property name="datafusion.native.lib.source" |
| value="${maven.multiModuleProjectDirectory}/rust-target/${datafusion.native.profile}/${datafusion.lib.filename}"/> |
| <fail message="Native library not found at ${datafusion.native.lib.source}. Run 'cargo build -p datafusion-jni' (or 'make') before building the JAR."> |
| <condition><not><available file="${datafusion.native.lib.source}"/></not></condition> |
| </fail> |
| <mkdir dir="${project.build.outputDirectory}/org/apache/datafusion/${datafusion.lib.os}/${datafusion.lib.arch}"/> |
| <copy file="${datafusion.native.lib.source}" |
| tofile="${project.build.outputDirectory}/org/apache/datafusion/${datafusion.lib.os}/${datafusion.lib.arch}/${datafusion.lib.filename}" |
| preservelastmodified="true" |
| verbose="true"/> |
| </target> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <groupId>com.googlecode.maven-download-plugin</groupId> |
| <artifactId>download-maven-plugin</artifactId> |
| <version>1.9.0</version> |
| <executions> |
| <execution> |
| <id>fetch-datafusion-common-proto</id> |
| <phase>generate-sources</phase> |
| <goals><goal>wget</goal></goals> |
| <configuration> |
| <url>https://raw.githubusercontent.com/apache/datafusion/${datafusion.version}/datafusion/proto-common/proto/datafusion_common.proto</url> |
| <outputDirectory>${project.build.directory}/proto/datafusion/proto-common/proto</outputDirectory> |
| <outputFileName>datafusion_common.proto</outputFileName> |
| <sha512>d6f3368372ea277cc23e26f196994b81616d38599357bb374cbd7eb1760e649a789e4c133d86a395ac701049a500348da2ec039d3f978ac5d8112c2876dded1f</sha512> |
| </configuration> |
| </execution> |
| <execution> |
| <id>fetch-datafusion-proto</id> |
| <phase>generate-sources</phase> |
| <goals><goal>wget</goal></goals> |
| <configuration> |
| <url>https://raw.githubusercontent.com/apache/datafusion/${datafusion.version}/datafusion/proto/proto/datafusion.proto</url> |
| <outputDirectory>${project.build.directory}/proto/datafusion/proto/proto</outputDirectory> |
| <outputFileName>datafusion.proto</outputFileName> |
| <sha512>c3d162b8e2a418e03f74caceaccfd934af89bb95a12ede13d4cc1701d24c734d74b1e96372142b173db05938dab7f965ad60d476363308c441677a63ea5fbcf7</sha512> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <groupId>org.xolstice.maven.plugins</groupId> |
| <artifactId>protobuf-maven-plugin</artifactId> |
| <version>0.6.1</version> |
| <configuration> |
| <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact> |
| <protoSourceRoot>${project.build.directory}/proto</protoSourceRoot> |
| </configuration> |
| <executions> |
| <execution> |
| <id>compile-upstream</id> |
| <goals><goal>compile</goal></goals> |
| </execution> |
| <execution> |
| <id>compile-local</id> |
| <goals><goal>compile</goal></goals> |
| <configuration> |
| <protoSourceRoot>${maven.multiModuleProjectDirectory}/proto</protoSourceRoot> |
| <clearOutputDirectory>false</clearOutputDirectory> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-javadoc-plugin</artifactId> |
| <configuration> |
| <source>17</source> |
| <failOnError>true</failOnError> |
| <failOnWarnings>false</failOnWarnings> |
| <doctitle>Apache DataFusion Java ${project.version}</doctitle> |
| <windowtitle>Apache DataFusion Java ${project.version}</windowtitle> |
| <links> |
| <link>https://docs.oracle.com/en/java/javase/17/docs/api/</link> |
| </links> |
| <excludePackageNames>datafusion_common:org.apache.datafusion.protobuf</excludePackageNames> |
| </configuration> |
| </plugin> |
| </plugins> |
| </build> |
| |
| <profiles> |
| <!-- |
| One of these profiles activates per host so the antrun copy |
| knows the OS/arch directory and library filename to use. |
| Resource layout follows the bundling convention: |
| |
| org/apache/datafusion/linux/amd64/libdatafusion_jni.so |
| org/apache/datafusion/linux/aarch64/libdatafusion_jni.so |
| org/apache/datafusion/darwin/x86_64/libdatafusion_jni.dylib |
| org/apache/datafusion/darwin/aarch64/libdatafusion_jni.dylib |
| org/apache/datafusion/windows/amd64/datafusion_jni.dll |
| --> |
| <profile> |
| <id>native-linux-amd64</id> |
| <activation> |
| <os><family>unix</family><name>linux</name><arch>amd64</arch></os> |
| </activation> |
| <properties> |
| <datafusion.lib.os>linux</datafusion.lib.os> |
| <datafusion.lib.arch>amd64</datafusion.lib.arch> |
| <datafusion.lib.filename>libdatafusion_jni.so</datafusion.lib.filename> |
| </properties> |
| </profile> |
| <profile> |
| <id>native-linux-aarch64</id> |
| <activation> |
| <os><family>unix</family><name>linux</name><arch>aarch64</arch></os> |
| </activation> |
| <properties> |
| <datafusion.lib.os>linux</datafusion.lib.os> |
| <datafusion.lib.arch>aarch64</datafusion.lib.arch> |
| <datafusion.lib.filename>libdatafusion_jni.so</datafusion.lib.filename> |
| </properties> |
| </profile> |
| <profile> |
| <id>native-mac-x86_64</id> |
| <activation> |
| <os><family>mac</family><arch>x86_64</arch></os> |
| </activation> |
| <properties> |
| <datafusion.lib.os>darwin</datafusion.lib.os> |
| <datafusion.lib.arch>x86_64</datafusion.lib.arch> |
| <datafusion.lib.filename>libdatafusion_jni.dylib</datafusion.lib.filename> |
| </properties> |
| </profile> |
| <profile> |
| <!-- Some JVMs report os.arch=amd64 even on macOS x86_64. --> |
| <id>native-mac-amd64</id> |
| <activation> |
| <os><family>mac</family><arch>amd64</arch></os> |
| </activation> |
| <properties> |
| <datafusion.lib.os>darwin</datafusion.lib.os> |
| <datafusion.lib.arch>x86_64</datafusion.lib.arch> |
| <datafusion.lib.filename>libdatafusion_jni.dylib</datafusion.lib.filename> |
| </properties> |
| </profile> |
| <profile> |
| <id>native-mac-aarch64</id> |
| <activation> |
| <os><family>mac</family><arch>aarch64</arch></os> |
| </activation> |
| <properties> |
| <datafusion.lib.os>darwin</datafusion.lib.os> |
| <datafusion.lib.arch>aarch64</datafusion.lib.arch> |
| <datafusion.lib.filename>libdatafusion_jni.dylib</datafusion.lib.filename> |
| </properties> |
| </profile> |
| <profile> |
| <id>native-windows-amd64</id> |
| <activation> |
| <os><family>windows</family><arch>amd64</arch></os> |
| </activation> |
| <properties> |
| <datafusion.lib.os>windows</datafusion.lib.os> |
| <datafusion.lib.arch>amd64</datafusion.lib.arch> |
| <datafusion.lib.filename>datafusion_jni.dll</datafusion.lib.filename> |
| </properties> |
| </profile> |
| </profiles> |
| </project> |