diff --git a/buildSrc/src/main/kotlin/artifacts.kt b/buildSrc/src/main/kotlin/artifacts.kt index eb487d21d4c..ced3fa19ab7 100644 --- a/buildSrc/src/main/kotlin/artifacts.kt +++ b/buildSrc/src/main/kotlin/artifacts.kt @@ -35,14 +35,26 @@ fun Project.testsJar(body: Jar.() -> Unit = {}): Jar { } } +var Project.artifactsRemovedDiagnosticFlag: Boolean + get() = extra.has("artifactsRemovedDiagnosticFlag") && extra["artifactsRemovedDiagnosticFlag"] == true + set(value) { + extra["artifactsRemovedDiagnosticFlag"] = value + } + +fun Project.removeArtifacts(configuration: Configuration, task: Task) { + configuration.artifacts.removeAll { artifact -> + artifact.file in task.outputs.files + } + + artifactsRemovedDiagnosticFlag = true +} + fun Project.noDefaultJar() { tasks.findByName("jar")?.let { defaultJarTask -> defaultJarTask.enabled = false defaultJarTask.actions = emptyList() configurations.forEach { cfg -> - cfg.artifacts.removeAll { artifact -> - artifact.file in defaultJarTask.outputs.files - } + removeArtifacts(cfg, defaultJarTask) } } } @@ -58,8 +70,7 @@ fun Project.runtimeJarArtifactBy(task: Task, artifactRef: Any, body: Configurabl fun Project.runtimeJar(task: T, body: T.() -> Unit = {}): T { extra["runtimeJarTask"] = task tasks.findByName("jar")?.let { defaultJarTask -> - configurations.getOrCreate("archives") - .artifacts.removeAll { artifact -> artifact.file in defaultJarTask.outputs.files } + removeArtifacts(configurations.getOrCreate("archives"), defaultJarTask) } return task.apply { setupPublicJar(project.the().archivesBaseName) @@ -109,6 +120,10 @@ fun Project.standardPublicJars() { fun Project.publish(body: Upload.() -> Unit = {}): Upload { apply() + if (artifactsRemovedDiagnosticFlag) { + error("`publish()` should be called before removing artifacts typically done in `noDefaultJar()` of `runtimeJar()` calls") + } + afterEvaluate { if (configurations.findByName("classes-dirs") != null) throw GradleException("classesDirsArtifact() is incompatible with publish(), see sources comments for details") diff --git a/prepare/compiler/build.gradle.kts.182 b/prepare/compiler/build.gradle.kts.182 index 3fb77cb22c1..5366672b6c6 100644 --- a/prepare/compiler/build.gradle.kts.182 +++ b/prepare/compiler/build.gradle.kts.182 @@ -99,6 +99,8 @@ dependencies { fatJarContentsStripServices(intellijDep("jps-standalone")) { includeJars("jps-model") } } +publish() + noDefaultJar() val packCompiler by task { @@ -154,8 +156,6 @@ dist(targetName = "$compilerBaseName.jar", fromTask = pack) { from(trove4jJar) } -publish() - runtimeJarArtifactBy(pack, pack.outputs.files.singleFile) { name = compilerBaseName classifier = "" diff --git a/prepare/compiler/build.gradle.kts.as34 b/prepare/compiler/build.gradle.kts.as34 index a548f3ba320..71d5b65830e 100644 --- a/prepare/compiler/build.gradle.kts.as34 +++ b/prepare/compiler/build.gradle.kts.as34 @@ -91,6 +91,8 @@ dependencies { fatJarContentsStripMetadata(intellijDep()) { includeJars("oro-2.0.8", "jdom", "log4j" ) } } +publish() + noDefaultJar() val packCompiler by task { @@ -146,8 +148,6 @@ dist(targetName = "$compilerBaseName.jar", fromTask = pack) { from(trove4jJar) } -publish() - runtimeJarArtifactBy(pack, pack.outputs.files.singleFile) { name = compilerBaseName classifier = "" @@ -158,4 +158,3 @@ sourcesJar { } javadocJar() -