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) {
|
fun setupAttributesMatchingStrategy(attributesSchema: AttributesSchema) {
|
||||||
attributesSchema.attribute(KotlinPlatformType.attribute).run {
|
attributesSchema.attribute(KotlinPlatformType.attribute).run {
|
||||||
if (isGradleVersionAtLeast(4, 0)) {
|
if (isGradleAtLeast(4, 0)) {
|
||||||
compatibilityRules.add(CompatibilityRule::class.java)
|
compatibilityRules.add(CompatibilityRule::class.java)
|
||||||
disambiguationRules.add(DisambiguationRule::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")
|
GradleVersion.current() >= GradleVersion.version("$major.$minor")
|
||||||
+13
-1
@@ -5,10 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||||
|
|
||||||
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.Dependency
|
import org.gradle.api.artifacts.Dependency
|
||||||
import org.gradle.api.artifacts.repositories.IvyArtifactRepository
|
import org.gradle.api.artifacts.repositories.IvyArtifactRepository
|
||||||
import org.gradle.api.artifacts.repositories.IvyPatternRepositoryLayout
|
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.internal.file.FileResolver
|
||||||
import org.gradle.api.plugins.JavaPlugin
|
import org.gradle.api.plugins.JavaPlugin
|
||||||
import org.gradle.internal.reflect.Instantiator
|
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.AndroidTasksProvider
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||||
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
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.KonanVersion
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
@@ -280,7 +283,16 @@ class KotlinNativeTargetPreset(
|
|||||||
this.repositories.ivy { repo ->
|
this.repositories.ivy { repo ->
|
||||||
repo.name = KOTLIN_NATIVE_FAKE_REPO_NAME
|
repo.name = KOTLIN_NATIVE_FAKE_REPO_NAME
|
||||||
repo.setUrl("file://$konanHome/klib")
|
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
|
val layout = it as IvyPatternRepositoryLayout
|
||||||
layout.artifact("common/[artifact]")
|
layout.artifact("common/[artifact]")
|
||||||
layout.artifact("platform/[classifier]/[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.KotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
|
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinDependencyHandler
|
import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinDependencyHandler
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import java.lang.reflect.Constructor
|
import java.lang.reflect.Constructor
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -53,7 +54,7 @@ class DefaultKotlinSourceSet(
|
|||||||
override val runtimeOnlyMetadataConfigurationName: String
|
override val runtimeOnlyMetadataConfigurationName: String
|
||||||
get() = lowerCamelCaseName(runtimeOnlyConfigurationName, METADATA_CONFIGURATION_NAME_SUFFIX)
|
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("**/*.java")
|
||||||
filter.include("**/*.kt")
|
filter.include("**/*.kt")
|
||||||
filter.include("**/*.kts")
|
filter.include("**/*.kts")
|
||||||
@@ -61,7 +62,7 @@ class DefaultKotlinSourceSet(
|
|||||||
|
|
||||||
override val languageSettings: LanguageSettingsBuilder = DefaultLanguageSettingsBuilder()
|
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 =
|
override fun kotlin(configureClosure: Closure<Any?>): SourceDirectorySet =
|
||||||
kotlin.apply { ConfigureUtil.configure(configureClosure, this) }
|
kotlin.apply { ConfigureUtil.configure(configureClosure, this) }
|
||||||
@@ -137,20 +138,26 @@ internal fun KotlinSourceSet.disambiguateName(simpleName: String): String {
|
|||||||
return lowerCamelCaseName(*nameParts.toTypedArray())
|
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 klass = DefaultSourceDirectorySet::class.java
|
||||||
val defaultConstructor = klass.constructorOrNull(String::class.java, FileResolver::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
|
// TODO: drop when gradle < 2.12 are obsolete
|
||||||
{ name, resolver -> defaultConstructor.newInstance(name, resolver) }
|
defaultConstructor.newInstance(name, resolver)
|
||||||
} else {
|
} else {
|
||||||
val directoryFileTreeFactoryClass = Class.forName("org.gradle.api.internal.file.collections.DirectoryFileTreeFactory")
|
val directoryFileTreeFactoryClass = Class.forName("org.gradle.api.internal.file.collections.DirectoryFileTreeFactory")
|
||||||
val alternativeConstructor = klass.getConstructor(String::class.java, FileResolver::class.java, directoryFileTreeFactoryClass)
|
val alternativeConstructor = klass.getConstructor(String::class.java, FileResolver::class.java, directoryFileTreeFactoryClass)
|
||||||
|
|
||||||
val defaultFileTreeFactoryClass = Class.forName("org.gradle.api.internal.file.collections.DefaultDirectoryFileTreeFactory")
|
val defaultFileTreeFactoryClass = Class.forName("org.gradle.api.internal.file.collections.DefaultDirectoryFileTreeFactory")
|
||||||
val defaultFileTreeFactory = defaultFileTreeFactoryClass.getConstructor().newInstance()
|
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