plugins {
  id "maven-publish"
}

description = 'gRPC: BOM'

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

      pom.withXml {
        // Generate bom using subprojects
        def internalProjects = [project.name, 'grpc-gae-interop-testing-jdk8', 'grpc-compiler', 'grpc-rls']

        def dependencyManagement = asNode().appendNode('dependencyManagement')
        def dependencies = dependencyManagement.appendNode('dependencies')
        rootProject.subprojects.each { subproject ->
          if (internalProjects.contains(subproject.name)) {
            return
          }
          def dependencyNode = dependencies.appendNode('dependency')
          dependencyNode.appendNode('groupId', subproject.group)
          dependencyNode.appendNode('artifactId', subproject.name)
          dependencyNode.appendNode('version', subproject.version)
        }
        // add protoc gen (produced by grpc-compiler with different artifact name)
        def dependencyNode = dependencies.appendNode('dependency')
        dependencyNode.appendNode('groupId', project.group)
        dependencyNode.appendNode('artifactId', 'protoc-gen-grpc-java')
        dependencyNode.appendNode('version', project.version)
        dependencyNode.appendNode('type', 'pom')
      }
    }
  }
}
