build.gradle 3.02 KB
/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.6.3/samples
 */

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'java'
    id 'idea'
    id 'application'
    id 'org.springframework.boot' version '2.3.3.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'com.google.protobuf' version '0.9.3'
}

repositories {
    maven { url 'https://maven.aliyun.com/repository/public/' }
    mavenLocal()
    mavenCentral()
}

application {
    mainClassName = 'com.tianting.infoloop.App'
    applicationDefaultJvmArgs = [
            '-Denv.propertiesFilePath=file:application.properties',
            '-Dlogging.path=logs']
}

ext {
    grpcVersion = '1.39.0'
    protobufVersion = '3.17.2'
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'mysql:mysql-connector-java:5.1.49'
    implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.3.1'
    implementation 'com.baomidou:dynamic-datasource-spring-boot-starter:3.5.1'
    implementation 'cn.hutool:hutool-all:5.8.26'

    implementation "io.zipkin.brave:brave:5.16.0"

    implementation "io.grpc:grpc-netty-shaded:${grpcVersion}"
    implementation "io.grpc:grpc-protobuf:${grpcVersion}"
    implementation "io.grpc:grpc-stub:${grpcVersion}"
    implementation "com.google.protobuf:protobuf-java-util:${protobufVersion}"
    compileOnly 'org.apache.tomcat:annotations-api:6.0.53' // necessary for Java 9+

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation "io.grpc:grpc-testing:${grpcVersion}"
}

static def isAppleSilicon() {
    // 检测 macOS 并且使用的是 Apple Silicon 架构
    return System.getProperty('os.name').toLowerCase().contains('mac') && System.getProperty('os.arch').equals('aarch64')
}

def protocPlatform = isAppleSilicon() ? ':osx-x86_64' : '';

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:${protobufVersion}${protocPlatform}"
    }
    plugins {
        grpc {
            artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}${protocPlatform}"
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.plugins {
                grpc {}
            }
        }
    }
}

tasks.withType(JavaCompile).configureEach {
    it.options.incremental = true
    it.options.compilerArgs += ["-Xlint:unchecked", "-Xlint:deprecation"]
    it.options.encoding = "UTF-8"
    it.options.fork = true
}

sourceSets {
    main {
        java {
            srcDirs 'build/generated/source/proto/main/grpc'
            srcDirs 'build/generated/source/proto/main/java'
            srcDirs 'build/generated/sources/annotationProcessor/java/main'
            srcDirs 'build/generated/sources/headers/java/main'
        }
    }
}


test {
    useJUnitPlatform()
}