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
get() = extra.has("artifactsRemovedDiagnosticFlag") && extra["artifactsRemovedDiagnosticFlag"] == true
set(value) {
extra["artifactsRemovedDiagnosticFlag"] = value
}
fun Project.setPublishableArtifact(
jarTask: TaskProvider<out Jar>
) {
addArtifact("runtimeElements", jarTask)
addArtifact("apiElements", jarTask)
addArtifact("archives", jarTask)
}
fun Project.removeArtifacts(configuration: Configuration, task: Task) {
configuration.artifacts.removeAll { artifact ->
artifact.file in task.outputs.files
}
artifactsRemovedDiagnosticFlag = true
fun removeJarTaskArtifact(
jarTask: TaskProvider<out Jar>
): Configuration.() -> Unit = {
val jarFile = jarTask.get().archiveFile.get().asFile
artifacts.removeIf { it.file == jarFile }
}
fun Project.noDefaultJar() {
tasks.named("jar").configure {
configurations.forEach { cfg ->
removeArtifacts(cfg, this)
}
val jarTask = tasks.named<Jar>("jar") {
enabled = false
}
configurations.named("apiElements", removeJarTaskArtifact(jarTask))
configurations.named("runtimeElements", removeJarTaskArtifact(jarTask))
configurations.named("archives", removeJarTaskArtifact(jarTask))
}
fun Jar.addEmbeddedRuntime() {
@@ -147,6 +147,4 @@ val resultJar by task<Jar> {
}
addArtifact("runtime", resultJar)
addArtifact("runtimeElements", resultJar)
addArtifact("archives", resultJar)
setPublishableArtifact(resultJar)
@@ -121,10 +121,6 @@ val resultJar by task<Jar> {
}
}
addArtifact("apiElements", resultJar)
addArtifact("runtimeElements", resultJar)
addArtifact("archives", resultJar)
setPublishableArtifact(resultJar)
sourcesJar()
javadocJar()
@@ -12,7 +12,6 @@ dependencies {
publish()
noDefaultJar()
runtimeJar(rewriteDefaultJarDepsToShadedCompiler())
sourcesJar()
+4 -2
View File
@@ -40,8 +40,6 @@ sourceSets {
"test" { projectDefault() }
}
publish()
// dummy is used for rewriting dependencies to the shaded packages in the embeddable compiler
compilerDummyJar(compilerDummyForDependenciesRewriting("compilerDummy") {
archiveClassifier.set("dummy")
@@ -54,6 +52,10 @@ val runtimeJar = runtimeJar(embeddableCompiler()) {
mergeServiceFiles()
}
publish {
setArtifacts(listOf(runtimeJar))
}
sourcesJar {
val compilerTask = project(":kotlin-compiler").tasks.named<Jar>("sourcesJar")
dependsOn(compilerTask)
@@ -79,9 +79,7 @@ idePluginDependency {
}
}
addArtifact("runtime", resultJar)
addArtifact("runtimeElements", resultJar)
addArtifact("archives", resultJar)
setPublishableArtifact(resultJar)
publish()