Skip to content

Commit 565bac1

Browse files
traskotelbot[bot]
authored andcommitted
Fix duplicate Maven publication coordinates (#19294)
1 parent 080c1d3 commit 565bac1

3 files changed

Lines changed: 75 additions & 0 deletions

File tree

build.gradle.kts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import io.opentelemetry.instrumentation.gradle.CheckMavenPublicationCoordinatesTask
12
import okhttp3.MediaType.Companion.toMediaType
23
import okhttp3.OkHttpClient
34
import okhttp3.RequestBody.Companion.asRequestBody
5+
import org.gradle.api.publish.PublishingExtension
6+
import org.gradle.api.publish.maven.MavenPublication
47
import java.time.Duration
58
import java.util.Base64
69

@@ -67,6 +70,22 @@ if (project.findProperty("skipTests") as String? == "true") {
6770
}
6871
}
6972

73+
val mavenPublicationCoordinates = objects.listProperty<String>()
74+
75+
subprojects {
76+
val projectPath = path
77+
pluginManager.withPlugin("maven-publish") {
78+
extensions.getByType<PublishingExtension>().publications
79+
.withType<MavenPublication>()
80+
.configureEach {
81+
val publication = this
82+
mavenPublicationCoordinates.add(provider {
83+
"${publication.groupId}:${publication.artifactId}:${publication.version}=$projectPath:${publication.name}"
84+
})
85+
}
86+
}
87+
}
88+
7089
if (gradle.startParameter.taskNames.contains("listTestsInPartition")) {
7190
tasks {
7291
register<DefaultTask>("listTestsInPartition") {
@@ -129,6 +148,21 @@ if (gradle.startParameter.taskNames.contains("listTestsInPartition")) {
129148
tasks {
130149
val stableVersion = version.toString().replace("-alpha", "")
131150

151+
val checkMavenPublicationCoordinates = register<CheckMavenPublicationCoordinatesTask>("checkMavenPublicationCoordinates") {
152+
group = "Verification"
153+
description = "Checks that Maven publications have unique coordinates"
154+
publicationCoordinates.set(mavenPublicationCoordinates)
155+
}
156+
157+
subprojects {
158+
tasks.matching { it.name == "check" }.configureEach {
159+
dependsOn(checkMavenPublicationCoordinates)
160+
}
161+
tasks.withType<PublishToMavenRepository>().configureEach {
162+
dependsOn(checkMavenPublicationCoordinates)
163+
}
164+
}
165+
132166
register<DefaultTask>("generateFossaConfiguration") {
133167
group = "Help"
134168
description = "Generate .fossa.yml configuration file"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.gradle
7+
8+
import org.gradle.api.DefaultTask
9+
import org.gradle.api.GradleException
10+
import org.gradle.api.provider.ListProperty
11+
import org.gradle.api.tasks.Input
12+
import org.gradle.api.tasks.TaskAction
13+
14+
abstract class CheckMavenPublicationCoordinatesTask : DefaultTask() {
15+
@get:Input
16+
abstract val publicationCoordinates: ListProperty<String>
17+
18+
@TaskAction
19+
fun checkPublicationCoordinates() {
20+
val duplicatePublications = publicationCoordinates.get()
21+
.groupBy { it.substringBefore('=') }
22+
.filterValues { it.size > 1 }
23+
24+
if (duplicatePublications.isEmpty()) {
25+
return
26+
}
27+
28+
val message = buildString {
29+
appendLine("Duplicate Maven publication coordinates:")
30+
duplicatePublications.toSortedMap().forEach { (coordinates, publications) ->
31+
appendLine(" $coordinates")
32+
publications.sorted().forEach { publication ->
33+
appendLine(" - ${publication.substringAfter('=')}")
34+
}
35+
}
36+
}
37+
throw GradleException(message)
38+
}
39+
}

instrumentation/sofa-rpc-5.4/library-autoconfigure/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ plugins {
22
id("otel.library-instrumentation")
33
}
44

5+
base.archivesName.set("${base.archivesName.get()}-autoconfigure")
6+
57
dependencies {
68
implementation(project(":instrumentation:sofa-rpc-5.4:library"))
79

0 commit comments

Comments
 (0)