[Build] Fix configuration cache issues with install task
* `install` task provided by `maven` plugin doesn't support configuration cache so replace `maven` plugin with `maven-publish` and use task that is subtype of PublishToMavenRepository. `maven-publish` partially support configuration cache, see https://github.com/gradle/gradle/issues/13468 * Apply `signing` plugin only if it really needed. The plugin doesn't support configuration cache. See https://github.com/gradle/gradle/issues/13470 Relates to #KT-44611
This commit is contained in:
@@ -16,7 +16,6 @@ import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
|
||||
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.gradle.plugins.signing.Sign
|
||||
import org.gradle.plugins.signing.SigningExtension
|
||||
import org.gradle.plugins.signing.SigningPlugin
|
||||
import java.util.*
|
||||
@@ -27,7 +26,6 @@ class KotlinBuildPublishingPlugin @Inject constructor(
|
||||
) : Plugin<Project> {
|
||||
override fun apply(target: Project): Unit = with(target) {
|
||||
apply<MavenPublishPlugin>()
|
||||
apply<SigningPlugin>()
|
||||
|
||||
val publishedRuntime = configurations.maybeCreate(RUNTIME_CONFIGURATION).apply {
|
||||
isCanBeConsumed = false
|
||||
@@ -129,13 +127,20 @@ fun Project.configureDefaultPublishing() {
|
||||
name = KotlinBuildPublishingPlugin.REPOSITORY_NAME
|
||||
url = file("${project.rootDir}/build/repo").toURI()
|
||||
}
|
||||
mavenLocal() // to workaround configuration cache issues with 'publishToMavenLocal' task
|
||||
}
|
||||
}
|
||||
|
||||
configureSigning()
|
||||
val signingRequired = project.providers.gradleProperty("signingRequired").forUseAtConfigurationTime().orNull?.toBoolean()
|
||||
?: project.providers.gradleProperty("isSonatypeRelease").forUseAtConfigurationTime().orNull?.toBoolean() ?: false
|
||||
|
||||
if (signingRequired) {
|
||||
apply<SigningPlugin>()
|
||||
configureSigning()
|
||||
}
|
||||
|
||||
tasks.register("install") {
|
||||
dependsOn(tasks.named("publishToMavenLocal"))
|
||||
dependsOn(tasks.named("publishAllPublicationsToMavenLocalRepository"))
|
||||
}
|
||||
|
||||
tasks.withType<PublishToMavenRepository>()
|
||||
@@ -144,20 +149,10 @@ fun Project.configureDefaultPublishing() {
|
||||
}
|
||||
|
||||
private fun Project.configureSigning() {
|
||||
val signingRequired = provider {
|
||||
project.findProperty("signingRequired")?.toString()?.toBoolean()
|
||||
?: project.property("isSonatypeRelease") as Boolean
|
||||
}
|
||||
|
||||
configure<SigningExtension> {
|
||||
setRequired(signingRequired)
|
||||
sign(extensions.getByType<PublishingExtension>().publications) // all publications
|
||||
useGpgCmd()
|
||||
}
|
||||
|
||||
tasks.withType<Sign>().configureEach {
|
||||
setOnlyIf { signingRequired.get() }
|
||||
}
|
||||
}
|
||||
|
||||
fun TaskProvider<PublishToMavenRepository>.configureRepository() =
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import org.jetbrains.kotlin.pill.PillExtension
|
||||
import plugins.configureKotlinPomAttributes
|
||||
|
||||
description = "Simple Annotation Processor for testing kapt"
|
||||
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
maven // only used for installing to mavenLocal()
|
||||
`maven-publish` // only used for installing to mavenLocal()
|
||||
id("jps-compatible")
|
||||
}
|
||||
|
||||
@@ -13,9 +14,24 @@ pill {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile(kotlinStdlib())
|
||||
implementation(kotlinStdlib())
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
"test" {}
|
||||
}
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
create<MavenPublication>("main") {
|
||||
from(components["java"])
|
||||
}
|
||||
}
|
||||
repositories {
|
||||
mavenLocal() // to workaround configuration cache issues with 'publishToMavenLocal' task
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register("install") {
|
||||
dependsOn(tasks.named("publishAllPublicationsToMavenLocalRepository"))
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'maven-publish'
|
||||
apply plugin: 'jps-compatible'
|
||||
|
||||
repositories {
|
||||
@@ -38,4 +38,19 @@ dependencies {
|
||||
// Relocate `com.intellij.*` and some other classes to match those in the `kotlin-compiler-embeddable`
|
||||
// (for example, the actual package at runtime is `org.jetbrains.kotlin.com.intellij.*`):
|
||||
ArtifactsKt.runtimeJar(project, EmbeddableKt.rewriteDefaultJarDepsToShadedCompiler(project, {}), {})
|
||||
// In a standalone build, you can setup the relocation with the Shadow plugin.
|
||||
// In a standalone build, you can setup the relocation with the Shadow plugin.
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
main(MavenPublication) {
|
||||
artifact tasks.named("embeddable")
|
||||
}
|
||||
}
|
||||
repositories {
|
||||
mavenLocal() // to workaround configuration cache issues with 'publishToMavenLocal' task
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register("install") {
|
||||
dependsOn(tasks.named("publishAllPublicationsToMavenLocalRepository"))
|
||||
}
|
||||
Reference in New Issue
Block a user