Fix ConcurrentModificationException

This exception is happening on build configuration trying to remove
default jar task artifacts from published one. I've set 'jar' task
to be always disabled instead and just add shadow jar to artifacts.
This commit is contained in:
Yahor Berdnikau
2022-05-04 12:51:36 +02:00
committed by Space
parent cf2d03b914
commit e25778a719
6 changed files with 25 additions and 29 deletions
+18 -15
View File
@@ -47,26 +47,29 @@ fun Project.testsJar(body: Jar.() -> Unit = {}): Jar {
} }
} }
var Project.artifactsRemovedDiagnosticFlag: Boolean fun Project.setPublishableArtifact(
get() = extra.has("artifactsRemovedDiagnosticFlag") && extra["artifactsRemovedDiagnosticFlag"] == true jarTask: TaskProvider<out Jar>
set(value) { ) {
extra["artifactsRemovedDiagnosticFlag"] = value addArtifact("runtimeElements", jarTask)
} addArtifact("apiElements", jarTask)
addArtifact("archives", jarTask)
}
fun Project.removeArtifacts(configuration: Configuration, task: Task) { fun removeJarTaskArtifact(
configuration.artifacts.removeAll { artifact -> jarTask: TaskProvider<out Jar>
artifact.file in task.outputs.files ): Configuration.() -> Unit = {
} val jarFile = jarTask.get().archiveFile.get().asFile
artifacts.removeIf { it.file == jarFile }
artifactsRemovedDiagnosticFlag = true
} }
fun Project.noDefaultJar() { fun Project.noDefaultJar() {
tasks.named("jar").configure { val jarTask = tasks.named<Jar>("jar") {
configurations.forEach { cfg -> enabled = false
removeArtifacts(cfg, this)
}
} }
configurations.named("apiElements", removeJarTaskArtifact(jarTask))
configurations.named("runtimeElements", removeJarTaskArtifact(jarTask))
configurations.named("archives", removeJarTaskArtifact(jarTask))
} }
fun Jar.addEmbeddedRuntime() { fun Jar.addEmbeddedRuntime() {
@@ -147,6 +147,4 @@ val resultJar by task<Jar> {
} }
addArtifact("runtime", resultJar) setPublishableArtifact(resultJar)
addArtifact("runtimeElements", resultJar)
addArtifact("archives", resultJar)
@@ -121,10 +121,6 @@ val resultJar by task<Jar> {
} }
} }
addArtifact("apiElements", resultJar) setPublishableArtifact(resultJar)
addArtifact("runtimeElements", resultJar)
addArtifact("archives", resultJar)
sourcesJar() sourcesJar()
javadocJar() javadocJar()
@@ -12,7 +12,6 @@ dependencies {
publish() publish()
noDefaultJar()
runtimeJar(rewriteDefaultJarDepsToShadedCompiler()) runtimeJar(rewriteDefaultJarDepsToShadedCompiler())
sourcesJar() sourcesJar()
+4 -2
View File
@@ -40,8 +40,6 @@ sourceSets {
"test" { projectDefault() } "test" { projectDefault() }
} }
publish()
// dummy is used for rewriting dependencies to the shaded packages in the embeddable compiler // dummy is used for rewriting dependencies to the shaded packages in the embeddable compiler
compilerDummyJar(compilerDummyForDependenciesRewriting("compilerDummy") { compilerDummyJar(compilerDummyForDependenciesRewriting("compilerDummy") {
archiveClassifier.set("dummy") archiveClassifier.set("dummy")
@@ -54,6 +52,10 @@ val runtimeJar = runtimeJar(embeddableCompiler()) {
mergeServiceFiles() mergeServiceFiles()
} }
publish {
setArtifacts(listOf(runtimeJar))
}
sourcesJar { sourcesJar {
val compilerTask = project(":kotlin-compiler").tasks.named<Jar>("sourcesJar") val compilerTask = project(":kotlin-compiler").tasks.named<Jar>("sourcesJar")
dependsOn(compilerTask) dependsOn(compilerTask)
@@ -79,9 +79,7 @@ idePluginDependency {
} }
} }
addArtifact("runtime", resultJar) setPublishableArtifact(resultJar)
addArtifact("runtimeElements", resultJar)
addArtifact("archives", resultJar)
publish() publish()