plugins { id "java-library" id "maven-publish" id "com.github.kt3k.coveralls" } description = "gRPC: All" def subprojects = [ project(':grpc-api'), project(':grpc-auth'), project(':grpc-context'), project(':grpc-core'), project(':grpc-grpclb'), project(':grpc-netty'), project(':grpc-okhttp'), project(':grpc-protobuf'), project(':grpc-protobuf-lite'), project(':grpc-rls'), project(':grpc-services'), project(':grpc-stub'), project(':grpc-testing'), project(':grpc-xds'), ] for (subproject in subprojects) { if (subproject == project) { continue } evaluationDependsOn(subproject.path) } evaluationDependsOn(':grpc-interop-testing') dependencies { api subprojects.minus([project(':grpc-protobuf-lite')]) } javadoc { classpath = files(subprojects.collect { subproject -> subproject.javadoc.classpath }) for (subproject in subprojects) { if (subproject == project) { continue; } source subproject.javadoc.source options.links subproject.javadoc.options.links.toArray(new String[0]) } } task jacocoMerge(type: JacocoMerge) { dependsOn(subprojects.jacocoTestReport.dependsOn) dependsOn(project(':grpc-interop-testing').jacocoTestReport.dependsOn) mustRunAfter(subprojects.jacocoTestReport.mustRunAfter) mustRunAfter(project(':grpc-interop-testing').jacocoTestReport.mustRunAfter) destinationFile = file("${buildDir}/jacoco/test.exec") executionData = files(subprojects.jacocoTestReport.executionData) .plus(project(':grpc-interop-testing').jacocoTestReport.executionData) .filter { f -> f.exists() } } jacocoTestReport { dependsOn(jacocoMerge) reports { xml.required = true html.required = true } subprojects.each { subproject -> additionalSourceDirs.from(subproject.jacocoTestReport.additionalSourceDirs) sourceDirectories.from(subproject.jacocoTestReport.sourceDirectories) classDirectories.from(subproject.jacocoTestReport.classDirectories) } } coveralls { sourceDirs = subprojects.sourceSets.main.allSource.srcDirs.flatten() } tasks.coveralls { dependsOn(jacocoTestReport) }