blob: f2805895ce402549972319978d0d5f34ada96244 [file] [log] [blame]
import org.gradle.api.*
import org.gradle.api.plugins.*
import org.gradle.api.tasks.*
import org.gradle.api.tasks.bundling.*
import org.gradle.api.tasks.testing.*
import org.gradle.kotlin.dsl.*
import ru.vyarus.gradle.plugin.animalsniffer.AnimalSnifferExtension
/*
* Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
// Animalsniffer setup
// Animalsniffer requires java plugin to be applied, but Kotlin 1.9.20
// relies on `java-base` for Kotlin Multiplatforms `withJava` implementation
// https://github.com/xvik/gradle-animalsniffer-plugin/issues/84
// https://youtrack.jetbrains.com/issue/KT-59595
plugins {
java
id("ru.vyarus.animalsniffer")
}
plugins.withId("org.jetbrains.kotlin.multiplatform") {
listOf(
JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME,
JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME
).forEach { outputConfigurationName ->
configurations.findByName(outputConfigurationName)?.isCanBeConsumed = false
}
disableJavaPluginTasks(extensions.getByName("sourceSets") as SourceSetContainer)
}
fun Project.disableJavaPluginTasks(javaSourceSet: SourceSetContainer) {
project.tasks.withType(Jar::class.java).named(javaSourceSet.getByName("main").jarTaskName).configure {
dependsOn("jvmTest")
enabled = false
}
project.tasks.withType(Test::class.java).named(JavaPlugin.TEST_TASK_NAME) {
dependsOn("jvmJar")
enabled = false
}
}
afterEvaluate { // Can be applied only when the project is evaluated
extensions.configure<AnimalSnifferExtension> {
sourceSets = listOf(this@afterEvaluate.sourceSets["main"])
val annotationValue = when(name) {
"kotlinx-serialization-core" -> "kotlinx.serialization.internal.SuppressAnimalSniffer"
"kotlinx-serialization-hocon" -> "kotlinx.serialization.hocon.internal.SuppressAnimalSniffer"
"kotlinx-serialization-protobuf" -> "kotlinx.serialization.protobuf.internal.SuppressAnimalSniffer"
"kotlinx-serialization-cbor" -> "kotlinx.serialization.cbor.internal.SuppressAnimalSniffer"
else -> "kotlinx.serialization.json.internal.SuppressAnimalSniffer"
}
annotation = annotationValue
}
dependencies {
"signature"("net.sf.androidscents.signature:android-api-level-14:4.0_r4@signature")
"signature"("org.codehaus.mojo.signature:java18:1.0@signature")
}
}