Skip to content

Commit e18d1a7

Browse files
committed
use gradle java-platform in grpc-bom; Fixes grpc#5530
1 parent b1bc0a9 commit e18d1a7

File tree

1 file changed

+26
-32
lines changed

1 file changed

+26
-32
lines changed

bom/build.gradle

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,39 @@
11
plugins {
2+
id 'java-platform'
23
id "maven-publish"
34
}
45

56
description = 'gRPC: BOM'
67

8+
gradle.projectsEvaluated {
9+
rootProject.subprojects.each { subproject ->
10+
if (subproject.plugins.hasPlugin('java')
11+
&& subproject.plugins.hasPlugin('maven-publish')
12+
&& subproject.tasks.findByName('publishMavenPublicationToMavenRepository')?.enabled) {
13+
dependencies {
14+
constraints {
15+
api subproject
16+
}
17+
}
18+
}
19+
}
20+
dependencies {
21+
constraints {
22+
// should have "<type>pom</type>", not sure how to express in gradle, patched in XML
23+
api "$project.group:protoc-gen-grpc-java:$project.version"
24+
}
25+
}
26+
}
27+
728
publishing {
829
publications {
930
maven(MavenPublication) {
10-
// remove all other artifacts since BOM doesn't generates any Jar
11-
artifacts = []
12-
31+
from components.javaPlatform
1332
pom.withXml {
14-
// Generate bom using subprojects
15-
def internalProjects = [
16-
project.name,
17-
'grpc-compiler',
18-
]
19-
20-
def dependencyManagement = asNode().appendNode('dependencyManagement')
21-
def dependencies = dependencyManagement.appendNode('dependencies')
22-
rootProject.subprojects.each { subproject ->
23-
if (internalProjects.contains(subproject.name)) {
24-
return
25-
}
26-
if (!subproject.hasProperty('publishMavenPublicationToMavenRepository')) {
27-
return
28-
}
29-
if (!subproject.publishMavenPublicationToMavenRepository.enabled) {
30-
return
31-
}
32-
def dependencyNode = dependencies.appendNode('dependency')
33-
dependencyNode.appendNode('groupId', subproject.group)
34-
dependencyNode.appendNode('artifactId', subproject.name)
35-
dependencyNode.appendNode('version', subproject.version)
36-
}
37-
// add protoc gen (produced by grpc-compiler with different artifact name)
38-
def dependencyNode = dependencies.appendNode('dependency')
39-
dependencyNode.appendNode('groupId', project.group)
40-
dependencyNode.appendNode('artifactId', 'protoc-gen-grpc-java')
41-
dependencyNode.appendNode('version', project.version)
42-
dependencyNode.appendNode('type', 'pom')
33+
def allDependencies = asNode().dependencyManagement.dependencies.dependency
34+
def lastDependency = allDependencies[allDependencies.size() - 1]
35+
assert lastDependency.artifactId.text() == 'protoc-gen-grpc-java'
36+
lastDependency.appendNode('type', 'pom')
4337
}
4438
}
4539
}

0 commit comments

Comments
 (0)