[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
|
package org.jetbrains.kotlin.gradle.utils
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.RegularFileProperty
|
|
||||||
import org.gradle.api.file.RegularFile
|
import org.gradle.api.file.RegularFile
|
||||||
|
import org.gradle.api.file.RegularFileProperty
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import java.io.File
|
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?> =
|
internal fun <T> Project.optionalProvider(initialize: () -> T?): ReadOnlyProperty<Any?, T?> =
|
||||||
OptionalProviderDelegate(provider(initialize))
|
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 =
|
internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularFileProperty =
|
||||||
project.objects.fileProperty().apply {
|
if (isGradleVersionAtLeast(5, 0)) {
|
||||||
if (initialize != null) {
|
project.objects.fileProperty().apply {
|
||||||
set(provider { RegularFile(initialize) })
|
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