Skip to content

Commit 215c44c

Browse files
committed
Update Maven workflow to package and verify JVM native resources
- Add resource preparation step to copy native libraries for supported platforms. - Update verification step to include checks for libraries in resource directories. - Simplify Gradle configuration by removing unused `nativeResources` and `processResources` logic. - Configure `sourceSets` to include new resource directories.
1 parent 2726ae4 commit 215c44c

2 files changed

Lines changed: 28 additions & 29 deletions

File tree

.github/workflows/publish-on-maven.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,33 @@ jobs:
138138
name: native-windows-x86_64
139139
path: wrywebview/target/x86_64-pc-windows-msvc/release/
140140

141+
- name: Prepare JVM native resources
142+
run: |
143+
mkdir -p wrywebview/src/jvmMain/resources/darwin-aarch64
144+
mkdir -p wrywebview/src/jvmMain/resources/darwin-x86-64
145+
mkdir -p wrywebview/src/jvmMain/resources/linux-x86-64
146+
mkdir -p wrywebview/src/jvmMain/resources/win32-x86-64
147+
cp wrywebview/target/aarch64-apple-darwin/release/libcomposewebview_wry.dylib \
148+
wrywebview/src/jvmMain/resources/darwin-aarch64/
149+
cp wrywebview/target/x86_64-apple-darwin/release/libcomposewebview_wry.dylib \
150+
wrywebview/src/jvmMain/resources/darwin-x86-64/
151+
cp wrywebview/target/x86_64-unknown-linux-gnu/release/libcomposewebview_wry.so \
152+
wrywebview/src/jvmMain/resources/linux-x86-64/
153+
cp wrywebview/target/x86_64-pc-windows-msvc/release/composewebview_wry.dll \
154+
wrywebview/src/jvmMain/resources/win32-x86-64/
155+
141156
- name: Verify native libraries
142157
run: |
143158
echo "=== Native libraries downloaded ==="
144159
ls -la wrywebview/target/aarch64-apple-darwin/release/
145160
ls -la wrywebview/target/x86_64-apple-darwin/release/
146161
ls -la wrywebview/target/x86_64-unknown-linux-gnu/release/
147162
ls -la wrywebview/target/x86_64-pc-windows-msvc/release/
163+
echo "=== Native libraries in resources ==="
164+
ls -la wrywebview/src/jvmMain/resources/darwin-aarch64/
165+
ls -la wrywebview/src/jvmMain/resources/darwin-x86-64/
166+
ls -la wrywebview/src/jvmMain/resources/linux-x86-64/
167+
ls -la wrywebview/src/jvmMain/resources/win32-x86-64/
148168
149169
- name: Set up JDK
150170
uses: actions/setup-java@v4

wrywebview/build.gradle.kts

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import gobley.gradle.cargo.tasks.CargoBuildTask
77
import gobley.gradle.cargo.tasks.FindDynamicLibrariesTask
88
import gobley.gradle.cargo.tasks.RustUpTargetAddTask
99
import org.gradle.api.Project
10-
import org.gradle.language.jvm.tasks.ProcessResources
1110
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
1211
import java.io.File
1312

@@ -20,17 +19,6 @@ fun rustLibraryName(triple: String): String = when {
2019
fun Project.prebuiltRustLibrary(triple: String): File =
2120
layout.projectDirectory.dir("target/$triple/release").file(rustLibraryName(triple)).asFile
2221

23-
data class NativeResource(val triple: String, val resourcePrefix: String)
24-
25-
val nativeResources = listOf(
26-
NativeResource("aarch64-apple-darwin", "darwin-aarch64"),
27-
NativeResource("x86_64-apple-darwin", "darwin-x86-64"),
28-
NativeResource("x86_64-unknown-linux-gnu", "linux-x86-64"),
29-
NativeResource("aarch64-unknown-linux-gnu", "linux-aarch64"),
30-
NativeResource("x86_64-pc-windows-msvc", "win32-x86-64"),
31-
NativeResource("aarch64-pc-windows-msvc", "win32-aarch64"),
32-
)
33-
3422
plugins {
3523
alias(libs.plugins.kotlinJvm)
3624
alias(libs.plugins.kotlinAtomicfu)
@@ -43,12 +31,8 @@ plugins {
4331
cargo {
4432
jvmVariant.set(Variant.Release)
4533
builds.jvm {
46-
// In CI with pre-built natives, embed if the library file exists
47-
// Otherwise, only embed for current host platform
48-
val triple = rustTarget.rustTriple
49-
val libName = rustLibraryName(triple)
50-
val prebuiltLib = layout.projectDirectory.dir("target/$triple/release").file(libName)
51-
embedRustLibrary = prebuiltLib.asFile.exists() || (GobleyHost.current.rustTarget == rustTarget)
34+
// Only embed for the current host platform; other platforms are packed as resources.
35+
embedRustLibrary = GobleyHost.current.rustTarget == rustTarget
5236
}
5337
}
5438

@@ -74,6 +58,12 @@ kotlin {
7458
jvmToolchain(17)
7559
}
7660

61+
sourceSets {
62+
main {
63+
resources.srcDir("src/jvmMain/resources")
64+
}
65+
}
66+
7767
dependencies {
7868
implementation(libs.jna)
7969
implementation(libs.skiko.awt)
@@ -85,17 +75,6 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile>().configureEa
8575
}
8676
}
8777

88-
tasks.named<ProcessResources>("processResources") {
89-
nativeResources.forEach { (triple, resourcePrefix) ->
90-
val prebuiltLib = project.prebuiltRustLibrary(triple)
91-
if (prebuiltLib.exists()) {
92-
from(prebuiltLib) {
93-
into(resourcePrefix)
94-
}
95-
}
96-
}
97-
}
98-
9978
tasks.withType<CargoBuildTask>().configureEach {
10079
onlyIf {
10180
val rustTarget = target.orNull ?: return@onlyIf true

0 commit comments

Comments
 (0)