From df55745b619edcbce3e300123043628e844824b4 Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Fri, 8 Apr 2022 17:31:02 +0300 Subject: [PATCH] [Build] Do not use project at execution time in jar tasks #KT-44611 In Progress --- buildSrc/src/main/kotlin/GradleCommon.kt | 5 +++-- buildSrc/src/main/kotlin/artifacts.kt | 18 +++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/buildSrc/src/main/kotlin/GradleCommon.kt b/buildSrc/src/main/kotlin/GradleCommon.kt index aaae54cec9e..6b13e2a5458 100644 --- a/buildSrc/src/main/kotlin/GradleCommon.kt +++ b/buildSrc/src/main/kotlin/GradleCommon.kt @@ -12,6 +12,7 @@ import org.gradle.api.attributes.Attribute import org.gradle.api.attributes.LibraryElements import org.gradle.api.attributes.java.TargetJvmEnvironment import org.gradle.api.attributes.plugin.GradlePluginApiVersion +import org.gradle.api.file.FileCollection import org.gradle.api.plugins.JavaLibraryPlugin import org.gradle.api.plugins.JavaPluginExtension import org.gradle.api.publish.PublishingExtension @@ -480,8 +481,8 @@ fun Project.publishShadowedJar( // When Gradle traverses the inputs, reject the shaded compiler JAR, // which leads to the content of that JAR being excluded as well: - val compilerDummyJarFile = project.provider { project.configurations.getByName("compilerDummyJar").singleFile } - exclude { it.file == compilerDummyJarFile.get() } + val compilerDummyJarConfiguration: FileCollection = project.configurations.getByName("compilerDummyJar") + exclude { it.file == compilerDummyJarConfiguration.singleFile } } // Removing artifact produced by Jar task diff --git a/buildSrc/src/main/kotlin/artifacts.kt b/buildSrc/src/main/kotlin/artifacts.kt index 41c943856aa..7b6aeef8c0c 100644 --- a/buildSrc/src/main/kotlin/artifacts.kt +++ b/buildSrc/src/main/kotlin/artifacts.kt @@ -11,6 +11,7 @@ import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.api.attributes.LibraryElements import org.gradle.api.attributes.Usage import org.gradle.api.component.AdhocComponentWithVariants +import org.gradle.api.file.ArchiveOperations import org.gradle.api.file.DuplicatesStrategy import org.gradle.api.plugins.BasePluginExtension import org.gradle.api.plugins.JavaPlugin @@ -22,6 +23,7 @@ import org.gradle.api.publish.maven.MavenPublication import org.gradle.api.publish.tasks.GenerateModuleMetadata import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.javadoc.Javadoc +import org.gradle.configurationcache.extensions.serviceOf import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.* import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer @@ -70,10 +72,11 @@ fun Project.noDefaultJar() { fun Jar.addEmbeddedRuntime() { project.configurations.findByName("embedded")?.let { embedded -> dependsOn(embedded) + val archiveOperations = project.serviceOf() from { embedded.map { if (it.extension.equals("jar", ignoreCase = true)) { - project.zipTree(it) + archiveOperations.zipTree(it) } else { it } @@ -144,7 +147,7 @@ fun Project.sourcesJar(body: Jar.() -> Unit = {}): TaskProvider { fun Jar.addEmbeddedSources() { project.configurations.findByName("embedded")?.let { embedded -> - from(project.provider { + val allSources by lazy { embedded.resolvedConfiguration .resolvedArtifacts .map { it.id.componentIdentifier } @@ -152,7 +155,8 @@ fun Jar.addEmbeddedSources() { .mapNotNull { project.project(it.projectPath).sources() } - }) + } + from({ allSources }) } } @@ -267,9 +271,9 @@ fun Project.publishProjectJars(projects: List, libraryDependencies: List jar.apply { dependsOn(fatJarContents) - + val archiveOperations = project.serviceOf() from { - fatJarContents.map(::zipTree) + fatJarContents.map(archiveOperations::zipTree) } } @@ -301,9 +305,9 @@ fun Project.publishTestJar(projects: List, excludedPaths: List) jar.apply { dependsOn(fatJarContents) - + val archiveOperations = project.serviceOf() from { - fatJarContents.map(::zipTree) + fatJarContents.map(archiveOperations::zipTree) } exclude(excludedPaths)