grpc-java/examples/build.gradle

123 lines
5.2 KiB
Groovy

plugins {
// Provide convenience executables for trying out the examples.
id 'application'
id 'com.google.protobuf' version '0.9.4'
// Generate IntelliJ IDEA's .idea & .iml project files
id 'idea'
}
repositories {
maven { // The google mirror is less flaky than mavenCentral()
url "https://maven-central.storage-download.googleapis.com/maven2/" }
mavenCentral()
mavenLocal()
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
// IMPORTANT: You probably want the non-SNAPSHOT version of gRPC. Make sure you
// are looking at a tagged version of the example and not "master"!
// Feel free to delete the comment at the next line. It is just for safely
// updating the version in our release process.
def grpcVersion = '1.64.0-SNAPSHOT' // CURRENT_GRPC_VERSION
def protobufVersion = '3.25.1'
def protocVersion = protobufVersion
dependencies {
implementation "io.grpc:grpc-protobuf:${grpcVersion}"
implementation "io.grpc:grpc-services:${grpcVersion}"
implementation "io.grpc:grpc-stub:${grpcVersion}"
compileOnly "org.apache.tomcat:annotations-api:6.0.53"
// examples/advanced need this for JsonFormat
implementation "com.google.protobuf:protobuf-java-util:${protobufVersion}"
runtimeOnly "io.grpc:grpc-netty-shaded:${grpcVersion}"
testImplementation "io.grpc:grpc-testing:${grpcVersion}"
testImplementation "io.grpc:grpc-inprocess:${grpcVersion}"
testImplementation "junit:junit:4.13.2"
testImplementation "org.mockito:mockito-core:4.4.0"
}
protobuf {
protoc { artifact = "com.google.protobuf:protoc:${protocVersion}" }
plugins {
grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" }
}
generateProtoTasks {
all()*.plugins { grpc {} }
}
}
// Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code.
sourceSets {
main {
java {
srcDirs 'build/generated/source/proto/main/grpc'
srcDirs 'build/generated/source/proto/main/java'
}
}
}
startScripts.enabled = false
// Creates start scripts for a class name and adds it to the distribution. The
// base class name is used to name the task and scripts. For example, passed
// the class io.grpc.examples.helloworld.HelloWorldClient, it creates the task
// helloWorldClient with script name hello-world-client.
def createStartScripts(String mainClassName) {
String bareName = mainClassName.substring(mainClassName.lastIndexOf('.') + 1);
String taskName = bareName.uncapitalize();
def newTask = tasks.register(taskName, CreateStartScripts) {
mainClass = mainClassName
applicationName = taskName.replaceAll('([A-Z])') { '-' + it[0].uncapitalize() }
outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
classpath = startScripts.classpath
}
application {
applicationDistribution.into('bin') {
from(newTask)
fileMode = 0755
}
}
}
createStartScripts('io.grpc.examples.advanced.HelloJsonClient')
createStartScripts('io.grpc.examples.advanced.HelloJsonServer')
createStartScripts('io.grpc.examples.cancellation.CancellationClient')
createStartScripts('io.grpc.examples.cancellation.CancellationServer')
createStartScripts('io.grpc.examples.customloadbalance.CustomLoadBalanceClient')
createStartScripts('io.grpc.examples.deadline.DeadlineClient')
createStartScripts('io.grpc.examples.deadline.DeadlineServer')
createStartScripts('io.grpc.examples.errordetails.ErrorDetailsExample')
createStartScripts('io.grpc.examples.experimental.CompressingHelloWorldClient')
createStartScripts('io.grpc.examples.grpcproxy.GrpcProxy')
createStartScripts('io.grpc.examples.healthservice.HealthServiceClient')
createStartScripts('io.grpc.examples.healthservice.HealthServiceServer')
createStartScripts('io.grpc.examples.hedging.HedgingHelloWorldClient')
createStartScripts('io.grpc.examples.hedging.HedgingHelloWorldServer')
createStartScripts('io.grpc.examples.helloworld.HelloWorldClient')
createStartScripts('io.grpc.examples.helloworld.HelloWorldServer')
createStartScripts('io.grpc.examples.keepalive.KeepAliveClient')
createStartScripts('io.grpc.examples.keepalive.KeepAliveServer')
createStartScripts('io.grpc.examples.loadbalance.LoadBalanceClient')
createStartScripts('io.grpc.examples.loadbalance.LoadBalanceServer')
createStartScripts('io.grpc.examples.manualflowcontrol.ManualFlowControlClient')
createStartScripts('io.grpc.examples.manualflowcontrol.ManualFlowControlServer')
createStartScripts('io.grpc.examples.multiplex.MultiplexingServer')
createStartScripts('io.grpc.examples.multiplex.SharingClient')
createStartScripts('io.grpc.examples.nameresolve.NameResolveClient')
createStartScripts('io.grpc.examples.nameresolve.NameResolveServer')
createStartScripts('io.grpc.examples.preserialized.PreSerializedClient')
createStartScripts('io.grpc.examples.preserialized.PreSerializedServer')
createStartScripts('io.grpc.examples.retrying.RetryingHelloWorldClient')
createStartScripts('io.grpc.examples.retrying.RetryingHelloWorldServer')
createStartScripts('io.grpc.examples.routeguide.RouteGuideClient')
createStartScripts('io.grpc.examples.routeguide.RouteGuideServer')
createStartScripts('io.grpc.examples.waitforready.WaitForReadyClient')