added Graal native image build for the server

This commit is contained in:
2025-02-06 00:29:12 +08:00
parent 5fef1b932e
commit a4e9d58aa7
14 changed files with 1810 additions and 1 deletions

56
gbcs-native/build.gradle Normal file
View File

@@ -0,0 +1,56 @@
plugins {
id 'java-library'
alias catalog.plugins.sambal
alias catalog.plugins.graalvm.native.image
}
import net.woggioni.gradle.graalvm.*
Property<String> mainModuleName = objects.property(String.class)
mainModuleName.set('net.woggioni.gbcs.cli')
Property<String> mainClassName = objects.property(String.class)
mainClassName.set('net.woggioni.gbcs.graal.NativeServer')
tasks.named(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile) {
options.javaModuleMainClass = mainClassName
}
configurations {
release {
transitive = false
canBeConsumed = true
canBeResolved = true
visible = true
}
}
dependencies {
implementation catalog.jwo
implementation catalog.netty.transport
implementation project(':gbcs-server')
implementation project(':gbcs-server-memcache')
// runtimeOnly catalog.slf4j.jdk14
runtimeOnly catalog.logback.classic
// runtimeOnly catalog.slf4j.simple
}
tasks.named(NativeImagePlugin.CONFIGURE_NATIVE_IMAGE_TASK_NAME, NativeImageConfigurationTask.class) {
mainClass = 'net.woggioni.gbcs.graal.ConfigureNativeServer'
// mainModule = mainModuleName
systemProperty('logback.configurationFile', 'classpath:net/woggioni/gbcs/graal/logback.xml')
systemProperty('io.netty.leakDetectionLevel', 'DISABLED')
modularity.inferModulePath = false
mergeConfiguration = true
enabled = false
}
tasks.named(NativeImagePlugin.NATIVE_IMAGE_TASK_NAME, NativeImageTask) {
mainClass = mainClassName
// mainModule = mainModuleName
useMusl = true
buildStaticImage = true
linkAtBuildTime = false
}