[Gradle] Access the artifact type attribute via non-deprecated API
#KT-54447 Fixed
This commit is contained in:
committed by
Space Team
parent
2de4f471e9
commit
67fc9be3c5
+5
@@ -162,6 +162,11 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
|
||||
KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class,
|
||||
DefaultKotlinTestReportCompatibilityHelperVariantFactory()
|
||||
)
|
||||
|
||||
factories.putIfAbsent(
|
||||
ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory::class,
|
||||
DefaultArtifactTypeAttributeAccessorVariantFactory()
|
||||
)
|
||||
}
|
||||
|
||||
protected fun setupAttributeMatchingStrategy(
|
||||
|
||||
+6
-6
@@ -16,7 +16,6 @@ import org.gradle.api.artifacts.type.ArtifactTypeDefinition
|
||||
import org.gradle.api.attributes.*
|
||||
import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||
import org.gradle.api.plugins.BasePlugin
|
||||
import org.gradle.api.plugins.ExtensionAware
|
||||
import org.gradle.api.plugins.JavaBasePlugin
|
||||
@@ -26,6 +25,7 @@ import org.gradle.api.tasks.bundling.Zip
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.gradle.language.jvm.tasks.ProcessResources
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.artifactTypeAttribute
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||
@@ -336,25 +336,25 @@ abstract class KotlinOnlyTargetConfigurator<KotlinCompilationType : KotlinCompil
|
||||
|
||||
val apiElementsConfiguration = project.configurations.getByName(target.apiElementsConfigurationName)
|
||||
// If the target adds its own artifact to this configuration until this happens, don't add another one:
|
||||
addJarIfNoArtifactsPresent(apiElementsConfiguration, jarArtifact)
|
||||
addJarIfNoArtifactsPresent(project, apiElementsConfiguration, jarArtifact)
|
||||
|
||||
if (mainCompilation is KotlinCompilationToRunnableFiles<*>) {
|
||||
val runtimeConfiguration = mainCompilation.internal.configurations.deprecatedRuntimeConfiguration
|
||||
val runtimeElementsConfiguration = project.configurations.getByName(target.runtimeElementsConfigurationName)
|
||||
runtimeConfiguration?.let { addJarIfNoArtifactsPresent(runtimeConfiguration, jarArtifact) }
|
||||
addJarIfNoArtifactsPresent(runtimeElementsConfiguration, jarArtifact)
|
||||
runtimeConfiguration?.let { addJarIfNoArtifactsPresent(project, runtimeConfiguration, jarArtifact) }
|
||||
addJarIfNoArtifactsPresent(project, runtimeElementsConfiguration, jarArtifact)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun addJarIfNoArtifactsPresent(configuration: Configuration, jarArtifact: PublishArtifact) {
|
||||
private fun addJarIfNoArtifactsPresent(project: Project, configuration: Configuration, jarArtifact: PublishArtifact) {
|
||||
if (configuration.artifacts.isEmpty()) {
|
||||
val publications = configuration.outgoing
|
||||
|
||||
// Configure an implicit variant
|
||||
publications.artifacts.add(jarArtifact)
|
||||
publications.attributes.attribute(ArtifactAttributes.ARTIFACT_FORMAT, archiveType)
|
||||
publications.attributes.attribute(project.artifactTypeAttribute, archiveType)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.type.ArtifactTypeDefinition
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories
|
||||
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
|
||||
|
||||
/**
|
||||
* Gradle 7.3 introduced the artifact type attribute as a part of public API.
|
||||
* The old API is now deprecated, so we continue using it only for old Gradle versions
|
||||
*/
|
||||
interface ArtifactTypeAttributeAccessor {
|
||||
val artifactTypeAttribute: Attribute<String>
|
||||
|
||||
interface ArtifactTypeAttributeAccessorVariantFactory : VariantImplementationFactories.VariantImplementationFactory {
|
||||
fun getInstance(): ArtifactTypeAttributeAccessor
|
||||
}
|
||||
}
|
||||
|
||||
internal class DefaultArtifactTypeAttributeAccessorVariantFactory :
|
||||
ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory {
|
||||
override fun getInstance() = DefaultArtifactTypeAttributeAccessor()
|
||||
}
|
||||
|
||||
internal class DefaultArtifactTypeAttributeAccessor : ArtifactTypeAttributeAccessor {
|
||||
override val artifactTypeAttribute: Attribute<String>
|
||||
get() = ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE
|
||||
}
|
||||
|
||||
internal val Project.artifactTypeAttribute
|
||||
get() = variantImplementationFactory<ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory>()
|
||||
.getInstance()
|
||||
.artifactTypeAttribute
|
||||
+4
-4
@@ -17,7 +17,6 @@ import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.attributes.Category
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE
|
||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||
import org.gradle.api.internal.plugins.DefaultArtifactPublicationSet
|
||||
import org.gradle.api.plugins.BasePlugin
|
||||
import org.gradle.api.provider.Provider
|
||||
@@ -28,6 +27,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.TEST_COMPILATION_NAME
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo.KPM
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.KOTLIN_NATIVE_IGNORE_INCORRECT_DEPENDENCIES
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.artifactTypeAttribute
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.registerEmbedAndSignAppleFrameworkTask
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariant
|
||||
@@ -125,7 +125,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
||||
artifacts.add(linkArtifact)
|
||||
attributes.attribute(KotlinPlatformType.attribute, binary.target.platformType)
|
||||
attributes.attribute(
|
||||
ArtifactAttributes.ARTIFACT_FORMAT,
|
||||
project.artifactTypeAttribute,
|
||||
NativeArtifactFormat.FRAMEWORK
|
||||
)
|
||||
attributes.attribute(
|
||||
@@ -303,7 +303,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
||||
|
||||
val apiElements = configurations.getByName(target.apiElementsConfigurationName)
|
||||
|
||||
apiElements.outgoing.attributes.attribute(ArtifactAttributes.ARTIFACT_FORMAT, NativeArtifactFormat.KLIB)
|
||||
apiElements.outgoing.attributes.attribute(artifactTypeAttribute, NativeArtifactFormat.KLIB)
|
||||
|
||||
if (project.isKotlinGranularMetadataEnabled) {
|
||||
project.configurations.create(target.hostSpecificMetadataElementsConfigurationName) { configuration ->
|
||||
@@ -580,7 +580,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
||||
}
|
||||
project.project.extensions.getByType(DefaultArtifactPublicationSet::class.java).addCandidate(klibArtifact)
|
||||
artifacts.add(klibArtifact)
|
||||
attributes.attribute(ArtifactAttributes.ARTIFACT_FORMAT, NativeArtifactFormat.KLIB)
|
||||
attributes.attribute(project.artifactTypeAttribute, NativeArtifactFormat.KLIB)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -8,11 +8,11 @@ package org.jetbrains.kotlin.gradle.targets.native.internal
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.attributes.*
|
||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator.NativeArtifactFormat
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.categoryByName
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.artifactTypeAttribute
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.copyAttributes
|
||||
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
|
||||
@@ -80,7 +80,7 @@ internal fun Project.locateOrCreateCInteropApiElementsConfiguration(target: Kotl
|
||||
attributes.attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, cinteropKlibLibraryElements())
|
||||
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, KotlinUsages.KOTLIN_CINTEROP))
|
||||
attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY))
|
||||
attributes.attribute(ArtifactAttributes.ARTIFACT_FORMAT, NativeArtifactFormat.KLIB)
|
||||
attributes.attribute(artifactTypeAttribute, NativeArtifactFormat.KLIB)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -149,4 +149,6 @@ private fun Project.registerVariantImplementations() {
|
||||
MppTestReportHelperG70.MppTestReportHelperVariantFactoryG70()
|
||||
factories[KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class] =
|
||||
KotlinTestReportCompatibilityHelperG70.KotlinTestReportCompatibilityHelperVariantFactoryG70()
|
||||
factories[ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory::class] =
|
||||
ArtifactTypeAttributeAccessorG70.ArtifactTypeAttributeAccessorVariantFactoryG70()
|
||||
}
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||
|
||||
internal class ArtifactTypeAttributeAccessorG70(
|
||||
) : ArtifactTypeAttributeAccessor {
|
||||
override val artifactTypeAttribute: Attribute<String>
|
||||
get() = ArtifactAttributes.ARTIFACT_FORMAT
|
||||
|
||||
internal class ArtifactTypeAttributeAccessorVariantFactoryG70 :
|
||||
ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory {
|
||||
override fun getInstance(): ArtifactTypeAttributeAccessor = ArtifactTypeAttributeAccessorG70()
|
||||
}
|
||||
}
|
||||
+2
@@ -150,4 +150,6 @@ private fun Project.registerVariantImplementations() {
|
||||
MppTestReportHelperG71.MppTestReportHelperVariantFactoryG71()
|
||||
factories[KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class] =
|
||||
KotlinTestReportCompatibilityHelperG71.KotlinTestReportCompatibilityHelperVariantFactoryG71()
|
||||
factories[ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory::class] =
|
||||
ArtifactTypeAttributeAccessorG71.ArtifactTypeAttributeAccessorVariantFactoryG71()
|
||||
}
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||
|
||||
internal class ArtifactTypeAttributeAccessorG71(
|
||||
) : ArtifactTypeAttributeAccessor {
|
||||
override val artifactTypeAttribute: Attribute<String>
|
||||
get() = ArtifactAttributes.ARTIFACT_FORMAT
|
||||
|
||||
internal class ArtifactTypeAttributeAccessorVariantFactoryG71 :
|
||||
ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory {
|
||||
override fun getInstance(): ArtifactTypeAttributeAccessor = ArtifactTypeAttributeAccessorG71()
|
||||
}
|
||||
}
|
||||
+2
@@ -155,4 +155,6 @@ private fun Project.registerVariantImplementations() {
|
||||
MppTestReportHelperG6.MppTestReportHelperVariantFactoryG6()
|
||||
factories[KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class] =
|
||||
KotlinTestReportCompatibilityHelperG6.KotlinTestReportCompatibilityHelperVariantFactoryG6()
|
||||
factories[ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory::class] =
|
||||
ArtifactTypeAttributeAccessorG6.ArtifactTypeAttributeAccessorVariantFactoryG6()
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.internal.artifacts.ArtifactAttributes
|
||||
|
||||
internal class ArtifactTypeAttributeAccessorG6(
|
||||
) : ArtifactTypeAttributeAccessor {
|
||||
override val artifactTypeAttribute: Attribute<String>
|
||||
get() = ArtifactAttributes.ARTIFACT_FORMAT
|
||||
|
||||
internal class ArtifactTypeAttributeAccessorVariantFactoryG6 :
|
||||
ArtifactTypeAttributeAccessor.ArtifactTypeAttributeAccessorVariantFactory {
|
||||
override fun getInstance(): ArtifactTypeAttributeAccessor = ArtifactTypeAttributeAccessorG6()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user