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:
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user