[Build] Remove local publishing workaround for configuration cache
#KTI-759 Fixed
This commit is contained in:
committed by
Space
parent
589ddc7b98
commit
80a68ec433
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package plugins
|
package plugins
|
||||||
|
|
||||||
import PublishToMavenLocalSerializable
|
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
@@ -14,7 +13,6 @@ import org.gradle.api.plugins.JavaBasePlugin
|
|||||||
import org.gradle.api.publish.PublishingExtension
|
import org.gradle.api.publish.PublishingExtension
|
||||||
import org.gradle.api.publish.maven.MavenPublication
|
import org.gradle.api.publish.maven.MavenPublication
|
||||||
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
|
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
|
||||||
import org.gradle.api.publish.maven.tasks.PublishToMavenLocal
|
|
||||||
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
|
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.kotlin.dsl.*
|
import org.gradle.kotlin.dsl.*
|
||||||
@@ -154,18 +152,6 @@ fun Project.configureDefaultPublishing() {
|
|||||||
dependsOn(tasks.named("publishToMavenLocal"))
|
dependsOn(tasks.named("publishToMavenLocal"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// workaround for Gradle configuration cache
|
|
||||||
// TODO: remove it when https://github.com/gradle/gradle/pull/16945 merged into used in build Gradle version
|
|
||||||
tasks.withType(PublishToMavenLocal::class.java) {
|
|
||||||
val originalTask = this
|
|
||||||
val serializablePublishTask =
|
|
||||||
tasks.register(originalTask.name + "Serializable", PublishToMavenLocalSerializable::class.java) {
|
|
||||||
publication = originalTask.publication
|
|
||||||
}
|
|
||||||
originalTask.onlyIf { false }
|
|
||||||
originalTask.dependsOn(serializablePublishTask)
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType<PublishToMavenRepository>()
|
tasks.withType<PublishToMavenRepository>()
|
||||||
.matching { it.name.endsWith("PublicationTo${KotlinBuildPublishingPlugin.REPOSITORY_NAME}Repository") }
|
.matching { it.name.endsWith("PublicationTo${KotlinBuildPublishingPlugin.REPOSITORY_NAME}Repository") }
|
||||||
.all { configureRepository() }
|
.all { configureRepository() }
|
||||||
|
|||||||
@@ -7,22 +7,13 @@
|
|||||||
// usages in build scripts are not tracked properly
|
// usages in build scripts are not tracked properly
|
||||||
@file:Suppress("unused")
|
@file:Suppress("unused")
|
||||||
|
|
||||||
import org.gradle.api.InvalidUserDataException
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.artifacts.ProjectDependency
|
import org.gradle.api.artifacts.ProjectDependency
|
||||||
import org.gradle.api.file.FileSystemOperations
|
import org.gradle.api.file.FileSystemOperations
|
||||||
import org.gradle.api.internal.tasks.testing.filter.DefaultTestFilter
|
import org.gradle.api.internal.tasks.testing.filter.DefaultTestFilter
|
||||||
import org.gradle.api.publish.internal.PublishOperation
|
|
||||||
import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal
|
|
||||||
import org.gradle.api.publish.maven.internal.publisher.MavenNormalizedPublication
|
|
||||||
import org.gradle.api.publish.maven.internal.publisher.MavenPublisher
|
|
||||||
import org.gradle.api.publish.maven.internal.publisher.ValidatingMavenPublisher
|
|
||||||
import org.gradle.api.publish.maven.tasks.AbstractPublishToMaven
|
|
||||||
import org.gradle.api.tasks.TaskAction
|
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.api.tasks.testing.Test
|
import org.gradle.api.tasks.testing.Test
|
||||||
import org.gradle.internal.serialization.Cached
|
|
||||||
import org.gradle.kotlin.dsl.extra
|
import org.gradle.kotlin.dsl.extra
|
||||||
import org.gradle.kotlin.dsl.project
|
import org.gradle.kotlin.dsl.project
|
||||||
import org.gradle.kotlin.dsl.support.serviceOf
|
import org.gradle.kotlin.dsl.support.serviceOf
|
||||||
@@ -292,30 +283,3 @@ fun Task.useAndroidSdk() {
|
|||||||
fun Task.useAndroidJar() {
|
fun Task.useAndroidJar() {
|
||||||
TaskUtils.useAndroidJar(this)
|
TaskUtils.useAndroidJar(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Workaround to make PublishToMavenLocal compatible with Gradle configuration cache
|
|
||||||
// TODO: remove it when https://github.com/gradle/gradle/pull/16945 merged into used in build Gradle version
|
|
||||||
abstract class PublishToMavenLocalSerializable : AbstractPublishToMaven() {
|
|
||||||
private val normalizedPublication = Cached.of { this.computeNormalizedPublication() }
|
|
||||||
|
|
||||||
private fun computeNormalizedPublication(): MavenNormalizedPublication {
|
|
||||||
val publicationInternal: MavenPublicationInternal = publicationInternal
|
|
||||||
?: throw InvalidUserDataException("The 'publication' property is required")
|
|
||||||
duplicatePublicationTracker.checkCanPublishToMavenLocal(publicationInternal)
|
|
||||||
return publicationInternal.asNormalisedPublication()
|
|
||||||
}
|
|
||||||
|
|
||||||
@TaskAction
|
|
||||||
open fun publish() {
|
|
||||||
val normalizedPublication = normalizedPublication.get()
|
|
||||||
object : PublishOperation(normalizedPublication.name, "mavenLocal") {
|
|
||||||
override fun publish() {
|
|
||||||
val localPublisher = mavenPublishers.getLocalPublisher(
|
|
||||||
temporaryDirFactory
|
|
||||||
)
|
|
||||||
val validatingPublisher: MavenPublisher = ValidatingMavenPublisher(localPublisher)
|
|
||||||
validatingPublisher.publish(normalizedPublication, null)
|
|
||||||
}
|
|
||||||
}.run()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -31,15 +31,3 @@ publishing {
|
|||||||
tasks.register("install") {
|
tasks.register("install") {
|
||||||
dependsOn(tasks.named("publishToMavenLocal"))
|
dependsOn(tasks.named("publishToMavenLocal"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// workaround for Gradle configuration cache
|
|
||||||
// TODO: remove it when https://github.com/gradle/gradle/pull/16945 merged into used in build Gradle version
|
|
||||||
tasks.withType(PublishToMavenLocal::class.java) {
|
|
||||||
val originalTask = this
|
|
||||||
val serializablePublishTask =
|
|
||||||
tasks.register(originalTask.name + "Serializable", PublishToMavenLocalSerializable::class.java) {
|
|
||||||
publication = originalTask.publication
|
|
||||||
}
|
|
||||||
originalTask.onlyIf { false }
|
|
||||||
originalTask.dependsOn(serializablePublishTask)
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user