[Gradle] Support getting the sourceSet name from tasks when...
...Gradle property is being used, instead of the direct String value.
This commit is contained in:
committed by
teamcityserver
parent
98cc99e36b
commit
1c0d40055e
@@ -9,6 +9,8 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.artifacts.Dependency
|
import org.gradle.api.artifacts.Dependency
|
||||||
import org.gradle.api.artifacts.ProjectDependency
|
import org.gradle.api.artifacts.ProjectDependency
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.util.GradleVersion
|
||||||
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
|
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
|
||||||
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService
|
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -94,8 +96,16 @@ abstract class AbstractKotlinGradleModelBuilder : ModelBuilderService {
|
|||||||
|
|
||||||
val kotlinPluginWrapper = "org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapperKt"
|
val kotlinPluginWrapper = "org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapperKt"
|
||||||
|
|
||||||
|
private val propertyClassPresent = GradleVersion.current() >= GradleVersion.version("4.3")
|
||||||
|
|
||||||
fun Task.getSourceSetName(): String = try {
|
fun Task.getSourceSetName(): String = try {
|
||||||
javaClass.methods.firstOrNull { it.name.startsWith("getSourceSetName") && it.parameterTypes.isEmpty() }?.invoke(this) as? String
|
val method = javaClass.methods.firstOrNull { it.name.startsWith("getSourceSetName") && it.parameterTypes.isEmpty() }
|
||||||
|
val sourceSetName = method?.invoke(this)
|
||||||
|
when {
|
||||||
|
sourceSetName is String -> sourceSetName
|
||||||
|
propertyClassPresent && sourceSetName is Property<*> -> sourceSetName.get() as? String
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
} catch (e: InvocationTargetException) {
|
} catch (e: InvocationTargetException) {
|
||||||
null // can be thrown if property is not initialized yet
|
null // can be thrown if property is not initialized yet
|
||||||
} ?: "main"
|
} ?: "main"
|
||||||
|
|||||||
Reference in New Issue
Block a user