plugins { id 'java-library' alias catalog.plugins.kotlin.jvm alias catalog.plugins.envelope alias catalog.plugins.sambal alias catalog.plugins.graalvm.native.image alias catalog.plugins.graalvm.jlink alias catalog.plugins.jpms.check id 'maven-publish' } import net.woggioni.gradle.envelope.EnvelopePlugin import net.woggioni.gradle.envelope.EnvelopeJarTask import net.woggioni.gradle.graalvm.NativeImageConfigurationTask import net.woggioni.gradle.graalvm.NativeImagePlugin import net.woggioni.gradle.graalvm.NativeImageTask import net.woggioni.gradle.graalvm.JlinkPlugin import net.woggioni.gradle.graalvm.JlinkTask configurations { release { transitive = false canBeConsumed = true canBeResolved = true visible = true } } dependencies { implementation catalog.jwo implementation catalog.slf4j.api implementation catalog.picocli implementation project(':rbcs-client') implementation project(':rbcs-server') // runtimeOnly catalog.slf4j.jdk14 runtimeOnly catalog.logback.classic // runtimeOnly catalog.slf4j.simple } Property mainModuleName = objects.property(String.class) mainModuleName.set('net.woggioni.rbcs.cli') Property mainClassName = objects.property(String.class) mainClassName.set('net.woggioni.rbcs.cli.RemoteBuildCacheServerCli') tasks.named(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile) { options.javaModuleMainClass = mainClassName } Provider envelopeJarTaskProvider = tasks.named(EnvelopePlugin.ENVELOPE_JAR_TASK_NAME, EnvelopeJarTask.class) { mainModule = mainModuleName mainClass = mainClassName extraClasspath = ["plugins"] systemProperties['logback.configurationFile'] = 'classpath:net/woggioni/rbcs/cli/logback.xml' systemProperties['io.netty.leakDetectionLevel'] = 'DISABLED' } tasks.named(NativeImagePlugin.CONFIGURE_NATIVE_IMAGE_TASK_NAME, NativeImageConfigurationTask) { mainClass = mainClassName mainModule = mainModuleName } tasks.named(NativeImagePlugin.NATIVE_IMAGE_TASK_NAME, NativeImageTask) { mainClass = mainClassName mainModule = mainModuleName useMusl = true buildStaticImage = true } tasks.named(JlinkPlugin.JLINK_TASK_NAME, JlinkTask) { mainClass = mainClassName mainModule = 'net.woggioni.rbcs.cli' } tasks.named(JavaPlugin.PROCESS_RESOURCES_TASK_NAME, ProcessResources) { from(rootProject.file('conf')) { into('net/woggioni/rbcs/cli') include 'logback.xml' include 'logging.properties' } } artifacts { release(envelopeJarTaskProvider) } publishing { publications { maven(MavenPublication) { artifact envelopeJar } } }