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-servlet'), project(':grpc-servlet-jakarta'), 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')]) implementation libraries.guava.jre // JRE required by transitive protobuf-java-util } tasks.named("javadoc").configure { 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]) } } tasks.named("jacocoTestReport").configure { dependsOn(subprojects.jacocoTestReport.dependsOn) dependsOn(project(':grpc-interop-testing').jacocoTestReport.dependsOn) executionData.from files(subprojects.jacocoTestReport.executionData) .plus(project(':grpc-interop-testing').jacocoTestReport.executionData) .filter { f -> f.exists() } 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.named("coveralls").configure { dependsOn tasks.named("jacocoTestReport") }