import java.io.File import org.robolectric.gradle.applyPomMetadata import org.robolectric.gradle.sonatypeRepositories plugins { `kotlin-dsl` `java-gradle-plugin` `maven-publish` signing } gradlePlugin { plugins { create("simulatorPlugin") { id = "org.robolectric.simulator" implementationClass = "org.robolectric.simulator.gradle.SimulatorPlugin" } } } dependencies { compileOnly("com.android.tools.build:gradle:8.2.2") implementation(libs.kotlin.stdlib) implementation(project(":simulator")) } afterEvaluate { val isSnapshotVersion = project.version.toString().endsWith("-SNAPSHOT") publishing { publications.named("pluginMaven", MavenPublication::class) { applyPomMetadata(project) } sonatypeRepositories(isSnapshotVersion) signing { setRequired { !isSnapshotVersion } sign(publications.getByName("pluginMaven")) } } } val generatedSourcesDir = File(buildDir, "generated-sources/kotlin/") // Generates a file containing the Robolectric version to be used by the plugin. val generateVersionFile by tasks.registering { outputs.dir(generatedSourcesDir) doLast { val versionFile = File(generatedSourcesDir, "org/robolectric/simulator/gradle/generated/Version.kt") versionFile.getParentFile().mkdirs() versionFile.writeText( """ package org.robolectric.simulator.gradle.generated // Generated by Gradle. Do not edit. object Version { const val VERSION = "${project.version}" } """ .trimIndent() ) } } sourceSets.main.get().kotlin.srcDirs(generatedSourcesDir) tasks.named("compileKotlin") { dependsOn(generateVersionFile) } tasks.named("clean") { delete(generatedSourcesDir) }