Skip to content

Commit

Permalink
use gradle java-platform in grpc-bom; Fixes #5530 (#11875)
Browse files Browse the repository at this point in the history
* use gradle java-platform in grpc-bom; Fixes #5530

* fix withXml

* explicitly exclude grpc-compiler
  • Loading branch information
panchenko authored Feb 5, 2025
1 parent 199a7ea commit 3142928
Showing 1 changed file with 18 additions and 26 deletions.
44 changes: 18 additions & 26 deletions bom/build.gradle
Original file line number Diff line number Diff line change
@@ -1,40 +1,32 @@
plugins {
id 'java-platform'
id "maven-publish"
}

description = 'gRPC: BOM'

gradle.projectsEvaluated {
def projectsToInclude = rootProject.subprojects.findAll {
return it.name != 'grpc-compiler'
&& it.plugins.hasPlugin('java')
&& it.plugins.hasPlugin('maven-publish')
&& it.tasks.findByName('publishMavenPublicationToMavenRepository')?.enabled
}
dependencies {
constraints {
projectsToInclude.each { api it }
}
}
}

publishing {
publications {
maven(MavenPublication) {
// remove all other artifacts since BOM doesn't generates any Jar
artifacts = []

from components.javaPlatform
pom.withXml {
// Generate bom using subprojects
def internalProjects = [
project.name,
'grpc-compiler',
]

def dependencyManagement = asNode().appendNode('dependencyManagement')
def dependencies = dependencyManagement.appendNode('dependencies')
rootProject.subprojects.each { subproject ->
if (internalProjects.contains(subproject.name)) {
return
}
if (!subproject.hasProperty('publishMavenPublicationToMavenRepository')) {
return
}
if (!subproject.publishMavenPublicationToMavenRepository.enabled) {
return
}
def dependencyNode = dependencies.appendNode('dependency')
dependencyNode.appendNode('groupId', subproject.group)
dependencyNode.appendNode('artifactId', subproject.name)
dependencyNode.appendNode('version', subproject.version)
}
def dependencies = asNode().dependencyManagement.dependencies.last()
// add protoc gen (produced by grpc-compiler with different artifact name)
// not sure how to express "<type>pom</type>" in gradle, kept in XML
def dependencyNode = dependencies.appendNode('dependency')
dependencyNode.appendNode('groupId', project.group)
dependencyNode.appendNode('artifactId', 'protoc-gen-grpc-java')
Expand Down

0 comments on commit 3142928

Please sign in to comment.