public abstract class KotlinBasePlugin : Plugin { public override fun apply(project: Project): Unit = with(project) { plugins.apply(VersionPlugin::class.java) plugins.apply(JavaPlugin::class.java) plugins.apply("kotlin") val extension = project.extensions.create(EXTENSION_NAME, DvConfigExtension::class.java, project) logger.warn("base known extension for publishable = ${extension.publishable.get()}") // Configure Java compilation extensions.getByType(JavaPluginExtension::class.java).apply { toolchain.languageVersion.set(JavaLanguageVersion.of(extension.jvmTarget.get())) } // Configure Kotlin compilation extensions.getByType(KotlinJvmProjectExtension::class.java).apply { compilerOptions.apply { jvmTarget.set(JvmTarget.fromTarget(extension.jvmTarget.get())) apiVersion.set(KotlinVersion.fromVersion(extension.kotlinVersion.get())) languageVersion.set(KotlinVersion.fromVersion(extension.kotlinVersion.get())) allWarningsAsErrors.set(true) } } // Configure JUnit5 as test framework tasks.named("test", Test::class.java) { it.useJUnitPlatform() } } } internal const val EXTENSION_NAME = "dvConfig"