Fix Gradle 5.0 deprecation warnings:
* DefaultSourceDirectorySet constructor is deprecated -> objects()
* IvyRepository.layout('pattern') { } is deprecated -> patternLayout { }
Issue #KT-26808 Fixed
This commit is contained in:
+2
-2
@@ -47,7 +47,7 @@ enum class KotlinPlatformType: Named, Serializable {
|
||||
|
||||
fun setupAttributesMatchingStrategy(attributesSchema: AttributesSchema) {
|
||||
attributesSchema.attribute(KotlinPlatformType.attribute).run {
|
||||
if (isGradleVersionAtLeast(4, 0)) {
|
||||
if (isGradleAtLeast(4, 0)) {
|
||||
compatibilityRules.add(CompatibilityRule::class.java)
|
||||
disambiguationRules.add(DisambiguationRule::class.java)
|
||||
}
|
||||
@@ -56,5 +56,5 @@ enum class KotlinPlatformType: Named, Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
private fun isGradleVersionAtLeast(major: Int, minor: Int) =
|
||||
private fun isGradleAtLeast(major: Int, minor: Int) =
|
||||
GradleVersion.current() >= GradleVersion.version("$major.$minor")
|
||||
+13
-1
@@ -5,10 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Dependency
|
||||
import org.gradle.api.artifacts.repositories.IvyArtifactRepository
|
||||
import org.gradle.api.artifacts.repositories.IvyPatternRepositoryLayout
|
||||
import org.gradle.api.artifacts.repositories.RepositoryLayout
|
||||
import org.gradle.api.internal.file.FileResolver
|
||||
import org.gradle.api.plugins.JavaPlugin
|
||||
import org.gradle.internal.reflect.Instantiator
|
||||
@@ -23,6 +25,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinT
|
||||
import org.jetbrains.kotlin.gradle.tasks.AndroidTasksProvider
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
@@ -280,7 +283,16 @@ class KotlinNativeTargetPreset(
|
||||
this.repositories.ivy { repo ->
|
||||
repo.name = KOTLIN_NATIVE_FAKE_REPO_NAME
|
||||
repo.setUrl("file://$konanHome/klib")
|
||||
repo.layout("pattern") {
|
||||
|
||||
fun IvyArtifactRepository.layoutCompatible(configureAction: (RepositoryLayout) -> Unit) =
|
||||
if (isGradleVersionAtLeast(5, 0)) {
|
||||
val patternLayoutFunction = javaClass.getMethod("patternLayout", Action::class.java)
|
||||
patternLayoutFunction(repo, Action<RepositoryLayout> { configureAction(it) })
|
||||
} else {
|
||||
layout("pattern", configureAction)
|
||||
}
|
||||
|
||||
repo.layoutCompatible {
|
||||
val layout = it as IvyPatternRepositoryLayout
|
||||
layout.artifact("common/[artifact]")
|
||||
layout.artifact("platform/[classifier]/[artifact]")
|
||||
|
||||
+13
-6
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinDependencyHandler
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import java.lang.reflect.Constructor
|
||||
import java.util.*
|
||||
@@ -53,7 +54,7 @@ class DefaultKotlinSourceSet(
|
||||
override val runtimeOnlyMetadataConfigurationName: String
|
||||
get() = lowerCamelCaseName(runtimeOnlyConfigurationName, METADATA_CONFIGURATION_NAME_SUFFIX)
|
||||
|
||||
override val kotlin: SourceDirectorySet = createDefaultSourceDirectorySet(name + " Kotlin source", fileResolver).apply {
|
||||
override val kotlin: SourceDirectorySet = createDefaultSourceDirectorySet(project, "$name Kotlin source", fileResolver).apply {
|
||||
filter.include("**/*.java")
|
||||
filter.include("**/*.kt")
|
||||
filter.include("**/*.kts")
|
||||
@@ -61,7 +62,7 @@ class DefaultKotlinSourceSet(
|
||||
|
||||
override val languageSettings: LanguageSettingsBuilder = DefaultLanguageSettingsBuilder()
|
||||
|
||||
override val resources: SourceDirectorySet = createDefaultSourceDirectorySet(displayName + " resources", fileResolver)
|
||||
override val resources: SourceDirectorySet = createDefaultSourceDirectorySet(project, "$name resources", fileResolver)
|
||||
|
||||
override fun kotlin(configureClosure: Closure<Any?>): SourceDirectorySet =
|
||||
kotlin.apply { ConfigureUtil.configure(configureClosure, this) }
|
||||
@@ -137,20 +138,26 @@ internal fun KotlinSourceSet.disambiguateName(simpleName: String): String {
|
||||
return lowerCamelCaseName(*nameParts.toTypedArray())
|
||||
}
|
||||
|
||||
private val createDefaultSourceDirectorySet: (name: String?, resolver: FileResolver?) -> SourceDirectorySet = run {
|
||||
private fun createDefaultSourceDirectorySet(project: Project, name: String?, resolver: FileResolver?): SourceDirectorySet {
|
||||
if (isGradleVersionAtLeast(5, 0)) {
|
||||
val objects = project.objects
|
||||
val sourceDirectorySetMethod = objects.javaClass.methods.single { it.name == "sourceDirectorySet" && it.parameterCount == 2 }
|
||||
return sourceDirectorySetMethod(objects, name, name) as SourceDirectorySet
|
||||
}
|
||||
|
||||
val klass = DefaultSourceDirectorySet::class.java
|
||||
val defaultConstructor = klass.constructorOrNull(String::class.java, FileResolver::class.java)
|
||||
|
||||
if (defaultConstructor != null && defaultConstructor.getAnnotation(java.lang.Deprecated::class.java) == null) {
|
||||
return if (defaultConstructor != null && defaultConstructor.getAnnotation(java.lang.Deprecated::class.java) == null) {
|
||||
// TODO: drop when gradle < 2.12 are obsolete
|
||||
{ name, resolver -> defaultConstructor.newInstance(name, resolver) }
|
||||
defaultConstructor.newInstance(name, resolver)
|
||||
} else {
|
||||
val directoryFileTreeFactoryClass = Class.forName("org.gradle.api.internal.file.collections.DirectoryFileTreeFactory")
|
||||
val alternativeConstructor = klass.getConstructor(String::class.java, FileResolver::class.java, directoryFileTreeFactoryClass)
|
||||
|
||||
val defaultFileTreeFactoryClass = Class.forName("org.gradle.api.internal.file.collections.DefaultDirectoryFileTreeFactory")
|
||||
val defaultFileTreeFactory = defaultFileTreeFactoryClass.getConstructor().newInstance()
|
||||
return@run { name, resolver -> alternativeConstructor.newInstance(name, resolver, defaultFileTreeFactory) }
|
||||
alternativeConstructor.newInstance(name, resolver, defaultFileTreeFactory)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user