diff --git a/json-schema-validator/build.gradle.kts b/json-schema-validator/build.gradle.kts index 88fc1e96..bf674208 100644 --- a/json-schema-validator/build.gradle.kts +++ b/json-schema-validator/build.gradle.kts @@ -3,8 +3,10 @@ import io.gitlab.arturbosch.detekt.Detekt import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jlleitschuh.gradle.ktlint.reporter.ReporterType plugins { @@ -18,6 +20,12 @@ plugins { convention.publication } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(11) + } +} + kotlin { explicitApi() @@ -25,8 +33,12 @@ kotlin { compilerOptions { freeCompilerArgs.add("-opt-in=io.github.optimumcode.json.schema.ExperimentalApi") } - jvmToolchain(11) jvm { + withJava() + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + freeCompilerArgs.add("-Xjdk-release=11") + } testRuns["test"].executionTask.configure { useJUnitPlatform() } @@ -168,4 +180,24 @@ afterEvaluate { tasks.named("check").configure { dependsOn(detektAllTask) } +} + +tasks { + named("compileJava") { + options.compilerArgumentProviders += + object : CommandLineArgumentProvider { + @InputFiles + @PathSensitive(PathSensitivity.RELATIVE) + val kotlinClasses = + this@tasks.named( + "compileKotlinJvm", + ).flatMap(KotlinCompile::destinationDirectory) + + override fun asArguments() = + listOf( + "--patch-module", + "io.github.optimumcode.json.schema=${kotlinClasses.get().asFile.absolutePath}", + ) + } + } } \ No newline at end of file diff --git a/json-schema-validator/src/jvmMain/java/module-info.java b/json-schema-validator/src/jvmMain/java/module-info.java new file mode 100644 index 00000000..8b08283b --- /dev/null +++ b/json-schema-validator/src/jvmMain/java/module-info.java @@ -0,0 +1,9 @@ +module io.github.optimumcode.json.schema { + requires kotlin.stdlib; + requires transitive kotlinx.serialization.json; + + exports io.github.optimumcode.json.schema; + exports io.github.optimumcode.json.schema.model; + exports io.github.optimumcode.json.schema.extension; + exports io.github.optimumcode.json.pointer; +} \ No newline at end of file