[Gradle, JS] Fix gradle <5.1 incompatibility with fileProperty
This commit is contained in:
+12
-4
@@ -6,8 +6,8 @@
|
||||
package org.jetbrains.kotlin.gradle.utils
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.file.RegularFile
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.provider.Provider
|
||||
import java.io.File
|
||||
@@ -38,9 +38,17 @@ private class OptionalProviderDelegate<T>(private val provider: Provider<T?>) :
|
||||
internal fun <T> Project.optionalProvider(initialize: () -> T?): ReadOnlyProperty<Any?, T?> =
|
||||
OptionalProviderDelegate(provider(initialize))
|
||||
|
||||
// Before 5.0 fileProperty is created via ProjectLayout
|
||||
// https://docs.gradle.org/current/javadoc/org/gradle/api/model/ObjectFactory.html#fileProperty--
|
||||
internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularFileProperty =
|
||||
project.objects.fileProperty().apply {
|
||||
if (initialize != null) {
|
||||
set(provider { RegularFile(initialize) })
|
||||
if (isGradleVersionAtLeast(5, 0)) {
|
||||
project.objects.fileProperty().apply {
|
||||
if (initialize != null) {
|
||||
set(provider { RegularFile(initialize) })
|
||||
}
|
||||
}
|
||||
} else {
|
||||
val projectLayoutClass = Class.forName("org.gradle.api.file.ProjectLayout")
|
||||
val filePropertyMethod = projectLayoutClass.getMethod("fileProperty")
|
||||
filePropertyMethod(project.layout) as RegularFileProperty
|
||||
}
|
||||
Reference in New Issue
Block a user