diff --git a/.github/workflows/java-publish.yml b/.github/workflows/java-publish.yml
index 094aa552a..35d052de9 100644
--- a/.github/workflows/java-publish.yml
+++ b/.github/workflows/java-publish.yml
@@ -39,9 +39,11 @@ jobs:
distribution: temurin
java-version: 8
cache: "maven"
- server-id: ossrh
- server-username: SONATYPE_USER
- server-password: SONATYPE_TOKEN
+ # Betas go to Fury and stable releases to Maven Central, which limits
+ # how many releases an organization may publish each month.
+ server-id: ${{ contains(github.ref, 'beta') && 'fury' || 'ossrh' }}
+ server-username: ${{ contains(github.ref, 'beta') && 'FURY_TOKEN' || 'SONATYPE_USER' }}
+ server-password: ${{ contains(github.ref, 'beta') && 'FURY_PASSWORD' || 'SONATYPE_TOKEN' }}
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Set git config
@@ -52,8 +54,16 @@ jobs:
if: github.event_name == 'pull_request'
run: |
./mvnw --batch-mode -DskipTests package -pl lancedb-core -am
- - name: Publish
- if: startsWith(github.ref, 'refs/tags/v')
+ - name: Publish to Fury
+ if: startsWith(github.ref, 'refs/tags/v') && contains(github.ref, 'beta')
+ run: |
+ ./mvnw --batch-mode -DskipTests deploy -pl lancedb-core -am -P deploy-to-fury
+ env:
+ FURY_TOKEN: ${{ secrets.FURY_TOKEN }}
+ # Fury authenticates with the token as the username; the password is ignored.
+ FURY_PASSWORD: NOPASS
+ - name: Publish to Maven Central
+ if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, 'beta')
run: |
echo "use-agent" >> ~/.gnupg/gpg.conf
echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
diff --git a/java/README.md b/java/README.md
index fd163b9f1..85e7e85ba 100644
--- a/java/README.md
+++ b/java/README.md
@@ -1,5 +1,39 @@
# LanceDB Java Enterprise Client
+## Installation
+
+Stable releases of `com.lancedb:lancedb-core` are published to Maven Central.
+
+Beta releases are published to `https://maven.fury.io/lancedb/` instead. They
+depend on Lance beta releases, which are published to `https://maven.lance.org`.
+To use a beta, add both repositories alongside Maven Central:
+
+```xml
+
+
+ lancedb
+ https://maven.fury.io/lancedb/
+
+
+ lance
+ https://maven.lance.org
+
+
+```
+
+For Gradle:
+
+```kotlin
+repositories {
+ mavenCentral()
+ maven { url = uri("https://maven.fury.io/lancedb/") }
+ maven { url = uri("https://maven.lance.org") }
+}
+```
+
+Use an explicit version, including the full `-beta.N` suffix. Beta versions are
+Maven releases, not `SNAPSHOT` versions.
+
## Configuration and Initialization
### LanceDB Cloud (legacy)
diff --git a/java/pom.xml b/java/pom.xml
index df709fb4f..fc89ebe4c 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -318,6 +318,15 @@
+
+ deploy-to-fury
+
+
+ fury
+ https://maven.fury.io/lancedb/
+
+
+
deploy-to-ossrh