Files
kotlin-fork/plugins/android-extensions/android-extensions-compiler/build.gradle.kts
T
Alexander.Likhachev a19bd2ed2e [Build] Migrate most of the build logic from Project.buildDir usage
It's going to be deprecated in Gradle 8.3

There's currently no way to pass a `org.gradle.api.provider.Provider` to the JavaExec.systemProperty or Test.systemProperty. There's a workaround using `org.gradle.process.CommandLineArgumentProvider`, but I intentionally don't rework these calls as Gradle is going to allow passing providers to configure system properties: https://github.com/gradle/gradle/issues/12247#issuecomment-1568427242
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00

109 lines
3.5 KiB
Kotlin

description = "Kotlin Android Extensions Compiler"
plugins {
kotlin("jvm")
id("jps-compatible")
}
val robolectricClasspath by configurations.creating
val robolectricDependency by configurations.creating
val androidExtensionsRuntimeForTests by configurations.creating
val layoutLib by configurations.creating
val layoutLibApi by configurations.creating
dependencies {
testApi(intellijCore())
compileOnly(project(":compiler:util"))
compileOnly(project(":compiler:plugin-api"))
compileOnly(project(":compiler:frontend"))
compileOnly(project(":compiler:frontend.java"))
compileOnly(project(":compiler:backend"))
compileOnly(project(":compiler:ir.backend.common"))
compileOnly(project(":compiler:backend.jvm"))
compileOnly(project(":compiler:ir.tree"))
compileOnly(project(":compiler:cli"))
compileOnly(project(":kotlin-android-extensions-runtime"))
compileOnly(intellijCore())
compileOnly(commonDependency("org.jetbrains.intellij.deps:asm-all"))
testApi(project(":compiler:util"))
testApi(project(":compiler:backend"))
testApi(project(":compiler:ir.backend.common"))
testApi(project(":compiler:backend.jvm"))
testApi(project(":compiler:cli"))
testApi(project(":kotlin-android-extensions-runtime"))
testApi(projectTests(":compiler:tests-common"))
testApi(project(":kotlin-test:kotlin-test-jvm"))
testImplementation(libs.junit4)
robolectricDependency("org.robolectric:android-all:5.0.2_r3-robolectric-r0")
robolectricClasspath(commonDependency("org.robolectric", "robolectric"))
robolectricClasspath(project(":kotlin-android-extensions-runtime")) { isTransitive = false }
embedded(project(":kotlin-android-extensions-runtime")) { isTransitive = false }
androidExtensionsRuntimeForTests(project(":kotlin-android-extensions-runtime")) { isTransitive = false }
layoutLib("org.jetbrains.intellij.deps.android.tools:layoutlib:26.5.0") { isTransitive = false }
layoutLibApi("com.android.tools.layoutlib:layoutlib-api:26.5.0") { isTransitive = false }
}
optInToExperimentalCompilerApi()
optInToUnsafeDuringIrConstructionAPI()
sourceSets {
"main" { projectDefault() }
"test" { projectDefault() }
}
runtimeJar()
sourcesJar()
javadocJar()
testsJar()
val robolectricDependencyDir = layout.buildDirectory.dir("robolectricDependencies")
val prepareRobolectricDependencies by tasks.registering(Copy::class) {
from(robolectricDependency)
into(robolectricDependencyDir)
}
projectTest {
dependsOn(androidExtensionsRuntimeForTests)
dependsOn(robolectricClasspath)
dependsOn(prepareRobolectricDependencies)
dependsOn(":dist")
workingDir = rootDir
useAndroidJar()
val androidExtensionsRuntimeProvider = project.provider {
androidExtensionsRuntimeForTests.asPath
}
val robolectricClasspathProvider = project.provider {
robolectricClasspath.asPath
}
val layoutLibConf: FileCollection = layoutLib
val layoutLibApiConf: FileCollection = layoutLibApi
doFirst {
systemProperty("androidExtensionsRuntime.classpath", androidExtensionsRuntimeProvider.get())
systemProperty("robolectric.classpath", robolectricClasspathProvider.get())
systemProperty("robolectric.offline", "true")
systemProperty("robolectric.dependency.dir", robolectricDependencyDir.get().asFile)
systemProperty("layoutLib.path", layoutLibConf.singleFile.canonicalPath)
systemProperty("layoutLibApi.path", layoutLibApiConf.singleFile.canonicalPath)
}
}