This is an automated email from the ASF dual-hosted git repository.
tison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 9b154a0ba chore: binding java's dependency (#7198)
9b154a0ba is described below
commit 9b154a0baf85cb390e7a27d1b718fb19b070de87
Author: tison <[email protected]>
AuthorDate: Sun Feb 22 21:17:24 2026 +0800
chore: binding java's dependency (#7198)
Signed-off-by: tison <[email protected]>
---
.github/actions/setup-hadoop/action.yaml | 6 +-
.../actions/test_behavior_binding_java/action.yaml | 2 +-
.github/scripts/test_behavior/plan.py | 12 ++-
.github/services/hdfs/hdfs_default_gcs/action.yml | 4 +-
.../hdfs/hdfs_default_on_azurite_azblob/action.yml | 4 +-
.../hdfs/hdfs_default_on_minio_s3/action.yml | 4 +-
.github/workflows/ci_bindings_java.yml | 34 ++++++--
.github/workflows/ci_core.yml | 24 +++---
.github/workflows/ci_integration_spring.yml | 4 +-
.github/workflows/docs.yml | 10 +--
.github/workflows/release_java.yml | 5 +-
.github/workflows/release_rust.yml | 4 +-
bindings/java/Cargo.toml | 94 ++++------------------
bindings/java/README.md | 10 ---
bindings/java/pom.xml | 33 ++++----
bindings/java/src/executor.rs | 8 +-
bindings/java/src/utility.rs | 75 +----------------
bindings/java/tools/build.py | 4 -
integrations/spring/pom.xml | 33 ++++++--
19 files changed, 137 insertions(+), 233 deletions(-)
diff --git a/.github/actions/setup-hadoop/action.yaml
b/.github/actions/setup-hadoop/action.yaml
index 835371e42..476bbb071 100644
--- a/.github/actions/setup-hadoop/action.yaml
+++ b/.github/actions/setup-hadoop/action.yaml
@@ -28,8 +28,8 @@ runs:
- name: Setup java env
uses: actions/setup-java@v4
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 11
- name: Cache hadoop
id: cache-hadoop
@@ -51,7 +51,7 @@ runs:
run: |
export HADOOP_HOME=/home/runner/hadoop-3.3.5
echo "HADOOP_HOME=${HADOOP_HOME}" >> $GITHUB_ENV
- echo "CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath --glob)" >>
$GITHUB_ENV
+ echo "CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath --glob)" >>
$GITHUB_ENV
echo "LD_LIBRARY_PATH=${{ env.JAVA_HOME
}}/lib/server:${HADOOP_HOME}/lib/native" >> $GITHUB_ENV
cp ${{ github.workspace }}/fixtures/hdfs/hdfs-site.xml
${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
diff --git a/.github/actions/test_behavior_binding_java/action.yaml
b/.github/actions/test_behavior_binding_java/action.yaml
index d9252b1c3..8adbb3142 100644
--- a/.github/actions/test_behavior_binding_java/action.yaml
+++ b/.github/actions/test_behavior_binding_java/action.yaml
@@ -41,7 +41,7 @@ runs:
- name: Run Test Binding Java
shell: bash
working-directory: bindings/java
- run: ./mvnw test -Dtest="behavior.*Test"
-Dcargo-build.features=${{ inputs.feature }}
+ run: ./mvnw test -Dtest="behavior.*Test"
env:
OPENDAL_TEST: ${{ inputs.service }}
EOF
diff --git a/.github/scripts/test_behavior/plan.py
b/.github/scripts/test_behavior/plan.py
index 162ea2f85..65651553e 100755
--- a/.github/scripts/test_behavior/plan.py
+++ b/.github/scripts/test_behavior/plan.py
@@ -175,7 +175,7 @@ def calculate_hint(changed_files: list[str]) -> Hint:
hint.binding_go = True
hint.all_service = True
- # cpp affected
+ # cpp affected
if p.startswith("bindings/cpp/"):
hint.binding_cpp = True
hint.all_service = True
@@ -267,9 +267,15 @@ def generate_language_binding_cases(
# Bindings may be treated as parallel requests, so we need to disable it
for all languages.
cases = [v for v in cases if v["service"] != "aliyun_drive"]
- # Remove hdfs cases for java and go.
+ # Remove invalid cases for java.
if language == "java":
- cases = [v for v in cases if v["service"] != "hdfs"]
+ cases = [v for v in cases if v["service"] not in [
+ "compfs",
+ "hdfs",
+ "hdfs_native",
+ "monoiofs",
+ "rocksdb",
+ ]]
if os.getenv("GITHUB_IS_PUSH") == "true":
return cases
diff --git a/.github/services/hdfs/hdfs_default_gcs/action.yml
b/.github/services/hdfs/hdfs_default_gcs/action.yml
index 578220972..b264e8e70 100644
--- a/.github/services/hdfs/hdfs_default_gcs/action.yml
+++ b/.github/services/hdfs/hdfs_default_gcs/action.yml
@@ -24,8 +24,8 @@ runs:
- name: Setup java env
uses: actions/setup-java@v4
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 11
- name: Load secrets
uses:
1password/load-secrets-action@13f58eec611f8e5db52ec16247f58c508398f3e6 # v3
with:
diff --git a/.github/services/hdfs/hdfs_default_on_azurite_azblob/action.yml
b/.github/services/hdfs/hdfs_default_on_azurite_azblob/action.yml
index 94a2763af..11ac22c2e 100644
--- a/.github/services/hdfs/hdfs_default_on_azurite_azblob/action.yml
+++ b/.github/services/hdfs/hdfs_default_on_azurite_azblob/action.yml
@@ -24,8 +24,8 @@ runs:
- name: Setup java env
uses: actions/setup-java@v4
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 11
- name: Setup azurite azblob service
shell: bash
working-directory: fixtures/azblob
diff --git a/.github/services/hdfs/hdfs_default_on_minio_s3/action.yml
b/.github/services/hdfs/hdfs_default_on_minio_s3/action.yml
index e75b8e415..cd8128aa9 100644
--- a/.github/services/hdfs/hdfs_default_on_minio_s3/action.yml
+++ b/.github/services/hdfs/hdfs_default_on_minio_s3/action.yml
@@ -24,8 +24,8 @@ runs:
- name: Setup java env
uses: actions/setup-java@v4
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 11
- name: Setup MinIO Server
shell: bash
working-directory: fixtures/s3
diff --git a/.github/workflows/ci_bindings_java.yml
b/.github/workflows/ci_bindings_java.yml
index 682fd892e..1003b8ace 100644
--- a/.github/workflows/ci_bindings_java.yml
+++ b/.github/workflows/ci_bindings_java.yml
@@ -46,17 +46,23 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- - name: Set up JDK 21
+ - name: Set up Rust toolchain
+ uses: ./.github/actions/setup
+ with:
+ need-nextest: true
+ need-protoc: true
+ need-rocksdb: true
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ - name: Set up JDK 25
uses: actions/setup-java@v5
with:
- distribution: 'zulu'
- java-version: '21'
+ distribution: zulu
+ java-version: 25
cache: 'maven'
- name: Build and check
working-directory: bindings/java
run: |
./mvnw clean compile spotless:check
-
- name: Check Clippy
working-directory: bindings/java
run: cargo clippy -- -D warnings
@@ -64,19 +70,33 @@ jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
+ fail-fast: false
matrix:
os:
- ubuntu-latest
- ubuntu-24.04-arm
- macos-latest
- windows-latest
+ java-version:
+ - 8
+ - 11
+ - 17
+ - 21
+ - 25
steps:
- uses: actions/checkout@v6
- - name: Set up JDK 8
+ - name: Set up Rust toolchain
+ uses: ./.github/actions/setup
+ with:
+ need-nextest: true
+ need-protoc: true
+ need-rocksdb: true
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ - name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v5
with:
- distribution: 'zulu'
- java-version: '8'
+ distribution: zulu
+ java-version: ${{ matrix.java-version }}
cache: 'maven'
- name: Build and test
working-directory: bindings/java
diff --git a/.github/workflows/ci_core.yml b/.github/workflows/ci_core.yml
index 264661077..cca7020a4 100644
--- a/.github/workflows/ci_core.yml
+++ b/.github/workflows/ci_core.yml
@@ -48,8 +48,8 @@ jobs:
- name: Checkout java env
uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 25
- name: Cargo doc
working-directory: core
@@ -70,8 +70,8 @@ jobs:
- name: Checkout java env
uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 25
- name: Cargo clippy
working-directory: core
@@ -126,8 +126,8 @@ jobs:
- name: Checkout java env
uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 25
- name: Setup Rust toolchain
uses: ./.github/actions/setup
@@ -157,8 +157,8 @@ jobs:
- name: Checkout java env
uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 25
- name: Setup Rust toolchain
uses: ./.github/actions/setup
@@ -266,8 +266,8 @@ jobs:
- name: Checkout java env
uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 25
- name: Setup Rust toolchain
uses: ./.github/actions/setup
@@ -311,8 +311,8 @@ jobs:
- name: Checkout java env
uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 25
- name: Setup Rust toolchain
uses: ./.github/actions/setup
diff --git a/.github/workflows/ci_integration_spring.yml
b/.github/workflows/ci_integration_spring.yml
index f848dbef7..de9237027 100644
--- a/.github/workflows/ci_integration_spring.yml
+++ b/.github/workflows/ci_integration_spring.yml
@@ -45,8 +45,8 @@ jobs:
- name: Set up Java
uses: actions/setup-java@v5
with:
- java-version: '17'
- distribution: 'temurin'
+ java-version: 25
+ distribution: zulu
- name: package and test
working-directory: integrations/spring
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index fb03aa5d4..94b7868f8 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -65,8 +65,8 @@ jobs:
- uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "17"
+ distribution: zulu
+ java-version: 25
- name: Build OpenDAL doc
working-directory: core
@@ -88,12 +88,12 @@ jobs:
- uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "17"
+ distribution: zulu
+ java-version: 25
- name: Build and test
working-directory: bindings/java
- run: mvn javadoc:javadoc
+ run: ./mvnw javadoc:javadoc
- name: Upload docs
uses: actions/upload-artifact@v6
diff --git a/.github/workflows/release_java.yml
b/.github/workflows/release_java.yml
index 7f1749330..c4a9daef1 100644
--- a/.github/workflows/release_java.yml
+++ b/.github/workflows/release_java.yml
@@ -55,7 +55,7 @@ jobs:
- name: Set up JDK 8
uses: actions/setup-java@v5
with:
- distribution: "zulu"
+ distribution: zulu
java-version: "8"
cache: "maven"
server-id: apache.releases.https
@@ -84,7 +84,6 @@ jobs:
-DskipTests=true \
-Djni.classifier=${{ matrix.classifier }} \
-Dcargo-build.profile=release \
- -Dcargo-build.features=services-all \
-Dcargo-build.enableZigbuild=${{ env.CARGO_BUILD_ENABLE_ZIGBUILD
}} \
-DaltStagingDirectory=local-staging \
-DskipRemoteStaging=true \
@@ -113,7 +112,7 @@ jobs:
- name: Set up JDK 8
uses: actions/setup-java@v5
with:
- distribution: "zulu"
+ distribution: zulu
java-version: "8"
cache: "maven"
server-id: apache.releases.https
diff --git a/.github/workflows/release_rust.yml
b/.github/workflows/release_rust.yml
index 28ac09ed2..fefab0605 100644
--- a/.github/workflows/release_rust.yml
+++ b/.github/workflows/release_rust.yml
@@ -56,8 +56,8 @@ jobs:
- name: Checkout java env
uses: actions/setup-java@v5
with:
- distribution: temurin
- java-version: "11"
+ distribution: zulu
+ java-version: 25
- name: Setup Rust toolchain
uses: ./.github/actions/setup
diff --git a/bindings/java/Cargo.toml b/bindings/java/Cargo.toml
index 64b0fb877..684ba2251 100644
--- a/bindings/java/Cargo.toml
+++ b/bindings/java/Cargo.toml
@@ -30,8 +30,21 @@ rust-version = "1.85"
crate-type = ["cdylib"]
doc = false
-[features]
-default = [
+[dependencies]
+jni = { version = "0.21.1" }
+# opendal-java won't be published to crates.io, we always use the local version
+opendal = { version = ">=0", path = "../../core", default-features = false,
features = [
+ "blocking",
+ "reqwest-rustls-tls",
+ "executors-tokio",
+
+ # enabled layers
+ "layers-concurrent-limit",
+ "layers-logging",
+ "layers-retry",
+ "layers-timeout",
+
+ # enabled services
"services-azblob",
"services-azdls",
"services-cos",
@@ -46,10 +59,6 @@ default = [
"services-s3",
"services-webdav",
"services-webhdfs",
-]
-
-services-all = [
- "default",
"services-aliyun-drive",
"services-cacache",
"services-dashmap",
@@ -90,77 +99,8 @@ services-all = [
"services-seafile",
"services-upyun",
"services-yandex-disk",
-]
-
-# Optional services provided by opendal.
-services-aliyun-drive = ["opendal/services-aliyun-drive"]
-services-alluxio = ["opendal/services-alluxio"]
-services-azblob = ["opendal/services-azblob"]
-services-azdls = ["opendal/services-azdls"]
-services-azfile = ["opendal/services-azfile"]
-services-b2 = ["opendal/services-b2"]
-services-cacache = ["opendal/services-cacache"]
-services-cloudflare-kv = ["opendal/services-cloudflare-kv"]
-services-compfs = ["opendal/services-compfs"]
-services-cos = ["opendal/services-cos"]
-services-dashmap = ["opendal/services-dashmap"]
-services-dbfs = ["opendal/services-dbfs"]
-services-dropbox = ["opendal/services-dropbox"]
-services-etcd = ["opendal/services-etcd"]
-services-foundationdb = ["opendal/services-foundationdb"]
-services-fs = ["opendal/services-fs"]
-services-ftp = ["opendal/services-ftp"]
-services-gcs = ["opendal/services-gcs"]
-services-gdrive = ["opendal/services-gdrive"]
-services-ghac = ["opendal/services-ghac"]
-services-github = ["opendal/services-github"]
-services-gridfs = ["opendal/services-gridfs"]
-services-hdfs = ["opendal/services-hdfs"]
-services-hdfs-native = ["opendal/services-hdfs-native"]
-services-hf = ["opendal/services-hf"]
-services-http = ["opendal/services-http"]
-services-huggingface = ["services-hf"]
-services-ipfs = ["opendal/services-ipfs"]
-services-ipmfs = ["opendal/services-ipmfs"]
-services-koofr = ["opendal/services-koofr"]
-services-lakefs = ["opendal/services-lakefs"]
-services-memcached = ["opendal/services-memcached"]
-services-memory = ["opendal/services-memory"]
-services-mini-moka = ["opendal/services-mini-moka"]
-services-moka = ["opendal/services-moka"]
-services-mongodb = ["opendal/services-mongodb"]
-services-monoiofs = ["opendal/services-monoiofs"]
-services-mysql = ["opendal/services-mysql"]
-services-obs = ["opendal/services-obs"]
-services-onedrive = ["opendal/services-onedrive"]
-services-oss = ["opendal/services-oss"]
-services-pcloud = ["opendal/services-pcloud"]
-services-persy = ["opendal/services-persy"]
-services-postgresql = ["opendal/services-postgresql"]
-services-redb = ["opendal/services-redb"]
-services-redis = ["opendal/services-redis"]
-services-rocksdb = ["opendal/services-rocksdb"]
-services-s3 = ["opendal/services-s3"]
-services-seafile = ["opendal/services-seafile"]
-services-sftp = ["opendal/services-sftp"]
-services-sled = ["opendal/services-sled"]
-services-sqlite = ["opendal/services-sqlite"]
-services-surrealdb = ["opendal/services-surrealdb"]
-services-swift = ["opendal/services-swift"]
-services-tikv = ["opendal/services-tikv"]
-services-upyun = ["opendal/services-upyun"]
-services-vercel-artifacts = ["opendal/services-vercel-artifacts"]
-services-vercel-blob = ["opendal/services-vercel-blob"]
-services-webdav = ["opendal/services-webdav"]
-services-webhdfs = ["opendal/services-webhdfs"]
-services-yandex-disk = ["opendal/services-yandex-disk"]
-
-[dependencies]
-anyhow = { version = "1.0.100" }
-jni = { version = "0.21.1" }
-# this crate won't be published, we always use the local version
-opendal = { version = ">=0", path = "../../core", features = ["blocking"] }
-tokio = { version = "1.28.1", features = ["full"] }
+] }
+tokio = { version = "1.49.0", features = ["full"] }
# This is not optimal. See also the Cargo issue:
# https://github.com/rust-lang/cargo/issues/1197#issuecomment-1641086954
diff --git a/bindings/java/README.md b/bindings/java/README.md
index 71a249942..24e892de2 100644
--- a/bindings/java/README.md
+++ b/bindings/java/README.md
@@ -155,16 +155,6 @@ You can run service behavior tests of enabled with the
following command:
./mvnw test -Dtest="behavior.*Test"
```
-Remember to enable the necessary features via
`-Dcargo-build.features=services-xxx` when running specific service test:
-
-```shell
-export OPENDAL_TEST=redis
-export OPENDAL_REDIS_ENDPOINT=tcp://127.0.0.1:6379
-export OPENDAL_REDIS_ROOT=/
-export OPENDAL_REDIS_DB=0
-./mvnw test -Dtest="behavior.*Test" -Dcargo-build.features=services-redis
-```
-
## Used by
Check out the [users](./users.md) list for more details on who is using
OpenDAL.
diff --git a/bindings/java/pom.xml b/bindings/java/pom.xml
index cb8b71be7..575d470fe 100644
--- a/bindings/java/pom.xml
+++ b/bindings/java/pom.xml
@@ -53,33 +53,34 @@
<properties>
<!-- This value is for Reproducible Builds. It will be updated by
Maven Release Plugin during releases. -->
- <project.build.outputTimestamp>10</project.build.outputTimestamp>
+
<project.build.outputTimestamp>2026-01-01T00:00:00Z</project.build.outputTimestamp>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- customized properties -->
<cargo-build.profile>dev</cargo-build.profile>
- <cargo-build.features>default</cargo-build.features>
<cargo-build.enableZigbuild>false</cargo-build.enableZigbuild>
<cargo-build.target/> <!-- override cargo build target; e.g., use musl
instead -->
<jni.classifier>${os.detected.classifier}</jni.classifier>
<!-- library dependencies -->
- <assertj.version>3.23.1</assertj.version>
- <commons-io.version>2.16.1</commons-io.version>
+ <assertj.version>3.27.7</assertj.version>
+ <commons-io.version>2.21.0</commons-io.version>
<dotenv.version>2.3.2</dotenv.version>
- <lombok.version>1.18.34</lombok.version>
- <slf4j.version>2.0.7</slf4j.version>
- <httpclient.version>5.2</httpclient.version>
+ <httpclient.version>5.6</httpclient.version>
+ <junit.version>5.10.0</junit.version>
+ <lombok.version>1.18.42</lombok.version>
+ <slf4j.version>2.0.17</slf4j.version>
<!-- plugins dependencies -->
- <maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version>
- <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
- <exec-maven-plugin.version>3.1.0</exec-maven-plugin.version>
- <os-maven-plugin.version>1.7.0</os-maven-plugin.version>
- <palantir-java-format.version>2.36.0</palantir-java-format.version>
- <spotless.version>2.39.0</spotless.version>
+ <maven-surefire-plugin.version>3.5.5</maven-surefire-plugin.version>
+ <maven-compiler-plugin.version>3.15.0</maven-compiler-plugin.version>
+ <exec-maven-plugin.version>3.6.3</exec-maven-plugin.version>
+ <os-maven-plugin.version>1.7.1</os-maven-plugin.version>
+ <palantir-java-format.version>2.81.0</palantir-java-format.version>
+ <spotless.version>3.2.0</spotless.version>
<maven-javadoc-plugin.version>3.6.3</maven-javadoc-plugin.version>
</properties>
@@ -88,7 +89,7 @@
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
- <version>5.9.2</version>
+ <version>${junit.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
@@ -215,8 +216,6 @@
<argument>${cargo-build.target}</argument>
<argument>--profile</argument>
<argument>${cargo-build.profile}</argument>
- <argument>--features</argument>
- <argument>${cargo-build.features}</argument>
<argument>--enable-zigbuild</argument>
<argument>${cargo-build.enableZigbuild}</argument>
</arguments>
@@ -298,7 +297,7 @@
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<bottom>
- Copyright © 2022-2024, The Apache Software Foundation.
Apache OpenDAL, OpenDAL, and Apache
+ Copyright © 2022-2026, The Apache Software Foundation.
Apache OpenDAL, OpenDAL, and Apache
are either registered trademarks or trademarks of the
Apache Software Foundation.
</bottom>
</configuration>
diff --git a/bindings/java/src/executor.rs b/bindings/java/src/executor.rs
index caa8263ae..e6e305609 100644
--- a/bindings/java/src/executor.rs
+++ b/bindings/java/src/executor.rs
@@ -28,7 +28,7 @@ use jni::JavaVM;
use jni::objects::JClass;
use jni::objects::JObject;
use jni::objects::JValue;
-use jni::sys::jlong;
+use jni::sys::{jint, jlong};
use tokio::task::JoinHandle;
use crate::Result;
@@ -38,6 +38,12 @@ thread_local! {
static ENV: RefCell<Option<*mut jni::sys::JNIEnv>> = const {
RefCell::new(None) };
}
+#[unsafe(no_mangle)]
+pub unsafe extern "system" fn JNI_OnLoad(_: JavaVM, _: *mut c_void) -> jint {
+ opendal::init_default_registry();
+ jni::sys::JNI_VERSION_1_8
+}
+
/// # Safety
///
/// This function could be only called by java vm when unload this lib.
diff --git a/bindings/java/src/utility.rs b/bindings/java/src/utility.rs
index c61a876ab..7ca9e617f 100644
--- a/bindings/java/src/utility.rs
+++ b/bindings/java/src/utility.rs
@@ -42,125 +42,52 @@ pub unsafe extern "system" fn
Java_org_apache_opendal_OpenDAL_loadEnabledService
fn intern_load_enabled_services(env: &mut JNIEnv) -> Result<jobjectArray> {
let services = HashSet::from([
- #[cfg(feature = "services-aliyun-drive")]
opendal::services::ALIYUN_DRIVE_SCHEME,
- #[cfg(feature = "services-alluxio")]
opendal::services::ALLUXIO_SCHEME,
- #[cfg(feature = "services-azblob")]
opendal::services::AZBLOB_SCHEME,
- #[cfg(feature = "services-azdls")]
opendal::services::AZDLS_SCHEME,
- #[cfg(feature = "services-azfile")]
opendal::services::AZFILE_SCHEME,
- #[cfg(feature = "services-b2")]
opendal::services::B2_SCHEME,
- #[cfg(feature = "services-cacache")]
opendal::services::CACACHE_SCHEME,
- #[cfg(feature = "services-cloudflare-kv")]
- opendal::services::CLOUDFLARE_KV_SCHEME,
- #[cfg(feature = "services-compfs")]
- opendal::services::COMPFS_SCHEME,
- #[cfg(feature = "services-cos")]
opendal::services::COS_SCHEME,
- #[cfg(feature = "services-dashmap")]
opendal::services::DASHMAP_SCHEME,
- #[cfg(feature = "services-dbfs")]
- opendal::services::DBFS_SCHEME,
- #[cfg(feature = "services-dropbox")]
opendal::services::DROPBOX_SCHEME,
- #[cfg(feature = "services-etcd")]
opendal::services::ETCD_SCHEME,
- #[cfg(feature = "services-foundationdb")]
- opendal::services::FOUNDATIONDB_SCHEME,
- #[cfg(feature = "services-fs")]
opendal::services::FS_SCHEME,
- #[cfg(feature = "services-ftp")]
- opendal::services::FTP_SCHEME,
- #[cfg(feature = "services-gcs")]
opendal::services::GCS_SCHEME,
- #[cfg(feature = "services-gdrive")]
opendal::services::GDRIVE_SCHEME,
- #[cfg(feature = "services-ghac")]
opendal::services::GHAC_SCHEME,
- #[cfg(feature = "services-github")]
- opendal::services::GITHUB_SCHEME,
- #[cfg(feature = "services-gridfs")]
opendal::services::GRIDFS_SCHEME,
- #[cfg(feature = "services-hdfs")]
- opendal::services::HDFS_SCHEME,
- #[cfg(feature = "services-hdfs-native")]
- opendal::services::HDFS_NATIVE_SCHEME,
- #[cfg(feature = "services-http")]
opendal::services::HTTP_SCHEME,
- #[cfg(feature = "services-hf")]
opendal::services::HF_SCHEME,
- #[cfg(feature = "services-ipfs")]
opendal::services::IPFS_SCHEME,
- #[cfg(feature = "services-ipmfs")]
opendal::services::IPMFS_SCHEME,
- #[cfg(feature = "services-koofr")]
opendal::services::KOOFR_SCHEME,
- #[cfg(feature = "services-lakefs")]
- opendal::services::LAKEFS_SCHEME,
- #[cfg(feature = "services-memcached")]
opendal::services::MEMCACHED_SCHEME,
- #[cfg(feature = "services-memory")]
opendal::services::MEMORY_SCHEME,
- #[cfg(feature = "services-mini-moka")]
opendal::services::MINI_MOKA_SCHEME,
- #[cfg(feature = "services-moka")]
opendal::services::MOKA_SCHEME,
- #[cfg(feature = "services-mongodb")]
opendal::services::MONGODB_SCHEME,
- #[cfg(feature = "services-monoiofs")]
- opendal::services::MONOIOFS_SCHEME,
- #[cfg(feature = "services-mysql")]
opendal::services::MYSQL_SCHEME,
- #[cfg(feature = "services-obs")]
opendal::services::OBS_SCHEME,
- #[cfg(feature = "services-onedrive")]
opendal::services::ONEDRIVE_SCHEME,
- #[cfg(feature = "services-oss")]
opendal::services::OSS_SCHEME,
- #[cfg(feature = "services-pcloud")]
- opendal::services::PCLOUD_SCHEME,
- #[cfg(feature = "services-persy")]
opendal::services::PERSY_SCHEME,
- #[cfg(feature = "services-postgresql")]
opendal::services::POSTGRESQL_SCHEME,
- #[cfg(feature = "services-redb")]
opendal::services::REDB_SCHEME,
- #[cfg(feature = "services-redis")]
opendal::services::REDIS_SCHEME,
- #[cfg(feature = "services-rocksdb")]
- opendal::services::ROCKSDB_SCHEME,
- #[cfg(feature = "services-s3")]
opendal::services::S3_SCHEME,
- #[cfg(feature = "services-seafile")]
opendal::services::SEAFILE_SCHEME,
- #[cfg(feature = "services-sftp")]
+ #[cfg(unix)]
opendal::services::SFTP_SCHEME,
- #[cfg(feature = "services-sled")]
opendal::services::SLED_SCHEME,
- #[cfg(feature = "services-sqlite")]
opendal::services::SQLITE_SCHEME,
- #[cfg(feature = "services-surrealdb")]
- opendal::services::SURREALDB_SCHEME,
- #[cfg(feature = "services-swift")]
opendal::services::SWIFT_SCHEME,
- #[cfg(feature = "services-tikv")]
opendal::services::TIKV_SCHEME,
- #[cfg(feature = "services-upyun")]
opendal::services::UPYUN_SCHEME,
- #[cfg(feature = "services-vercel-artifacts")]
opendal::services::VERCEL_ARTIFACTS_SCHEME,
- #[cfg(feature = "services-vercel-blob")]
- opendal::services::VERCEL_BLOB_SCHEME,
- #[cfg(feature = "services-webdav")]
opendal::services::WEBDAV_SCHEME,
- #[cfg(feature = "services-webhdfs")]
opendal::services::WEBHDFS_SCHEME,
- #[cfg(feature = "services-yandex-disk")]
opendal::services::YANDEX_DISK_SCHEME,
]);
diff --git a/bindings/java/tools/build.py b/bindings/java/tools/build.py
index 0eedaa65e..aa626e88c 100755
--- a/bindings/java/tools/build.py
+++ b/bindings/java/tools/build.py
@@ -54,7 +54,6 @@ if __name__ == "__main__":
parser.add_argument("--classifier", type=str, required=True)
parser.add_argument("--target", type=str, default="")
parser.add_argument("--profile", type=str, default="dev")
- parser.add_argument("--features", type=str, default="default")
parser.add_argument("--enable-zigbuild", type=str, default="false")
args = parser.parse_args()
@@ -78,9 +77,6 @@ if __name__ == "__main__":
f"--profile={args.profile}",
]
- if args.features:
- cmd += ["--features", args.features]
-
if enable_zigbuild:
# Pin glibc to 2.17 if zigbuild has been enabled.
cmd += ["--target", f"{target}.2.17"]
diff --git a/integrations/spring/pom.xml b/integrations/spring/pom.xml
index 11d3cd0b7..532113960 100644
--- a/integrations/spring/pom.xml
+++ b/integrations/spring/pom.xml
@@ -35,17 +35,19 @@
</modules>
<properties>
- <maven.compiler.source>17</maven.compiler.source>
- <maven.compiler.target>17</maven.compiler.target>
+ <maven.compiler.release>21</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- dependency -->
- <opendal.version>0.47.0</opendal.version>
- <spring-boot.version>3.3.2</spring-boot.version>
+ <lombok.version>1.18.42</lombok.version>
+ <opendal.version>0.48.2</opendal.version>
+ <spring-boot.version>4.0.3</spring-boot.version>
<!-- plugin -->
+ <maven-compiler-plugin.version>3.15.0</maven-compiler-plugin.version>
<os-maven-plugin.version>1.7.1</os-maven-plugin.version>
- <spotless-maven-plugin.version>2.43.0</spotless-maven-plugin.version>
+ <spotless-maven-plugin.version>3.2.0</spotless-maven-plugin.version>
</properties>
<dependencyManagement>
@@ -57,6 +59,11 @@
<type>pom</type>
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${lombok.version}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -64,7 +71,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
- <optional>true</optional>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.opendal</groupId>
@@ -108,6 +115,20 @@
</java>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${maven-compiler-plugin.version}</version>
+ <configuration>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${lombok.version}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
</plugins>
</build>