1plugins { 2 id "maven-publish" 3} 4 5description = 'gRPC: BOM' 6 7publishing { 8 publications { 9 maven(MavenPublication) { 10 // remove all other artifacts since BOM doesn't generates any Jar 11 artifacts = [] 12 13 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') 43 } 44 } 45 } 46} 47