plugins { id 'application' alias catalog.plugins.kotlin.jvm alias catalog.plugins.graalvm.native.image alias catalog.plugins.graalvm.jlink alias catalog.plugins.envelope id 'maven-publish' } import net.woggioni.gradle.envelope.EnvelopeJarTask import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.dsl.JvmTarget group = 'net.woggioni' version = getProperty('gbcs.version') application { mainModule = 'net.woggioni.gbcs' mainClass = 'net.woggioni.gbcs.GradleBuildCacheServer' // mainClass = 'net.woggioni.gbcs.NettyPingServer' } configureNativeImage { mainClass = 'net.woggioni.gbcs.GraalNativeImageConfiguration' } repositories { maven { url = getProperty('gitea.maven.url') content { includeModule 'net.woggioni', 'jwo' includeGroup 'com.lys' } } mavenCentral() } dependencies { implementation catalog.jwo implementation catalog.slf4j.api implementation catalog.netty.codec.http // runtimeOnly catalog.slf4j.jdk14 runtimeOnly catalog.logback.classic // // https://mvnrepository.com/artifact/org.fusesource.jansi/jansi // runtimeOnly group: 'org.fusesource.jansi', name: 'jansi', version: '2.4.1' testImplementation catalog.junit.jupiter.api testImplementation catalog.junit.jupiter.params testRuntimeOnly catalog.junit.jupiter.engine } java { withSourcesJar() modularity.inferModulePath = true toolchain { languageVersion = JavaLanguageVersion.of(21) // vendor = JvmVendorSpec.GRAAL_VM } } test { useJUnitPlatform() } tasks.named(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile) { options.compilerArgs << '--patch-module' << 'net.woggioni.gbcs=' + project.sourceSets.main.output.asPath } tasks.withType(JavaCompile) { modularity.inferModulePath = true options.release = 21 } tasks.named("compileKotlin", KotlinCompile.class) { compilerOptions.jvmTarget = JvmTarget.JVM_21 } Provider envelopeJarTaskProvider = tasks.named('envelopeJar', EnvelopeJarTask.class) { // systemProperties['java.util.logging.config.class'] = 'net.woggioni.gbcs.LoggingConfig' // systemProperties['log.config.source'] = 'logging.properties' systemProperties['logback.configurationFile'] = 'classpath:logback.xml' } def envelopeJarArtifact = artifacts.add('archives', envelopeJarTaskProvider.get().archiveFile.get().asFile) { type = 'jar' builtBy envelopeJarTaskProvider } publishing { repositories { maven { url = 'https://mvn.woggioni.net/' } } publications { maven(MavenPublication) { artifact envelopeJarArtifact } } }