buildscript {
    ext {
        kotlin_version = '1.2.41'
        spring_boot_version = '1.5.10.RELEASE'
        junit_version = '4.12'
        commons_io_version = '2.5'
        commons_lang3_version = '3.5'
        commons_codec_version = '1.10'
        commons_fileupload_version = '1.3.2'
        slf4j_api_version = '1.7.25'
        ehcache_version = '3.4.0'
        ehcache_core_version = '2.6.11'
        mysql_connector_version = '5.1.45'
        alidruid_version = '1.1.6'
        mybatis_plus_version = '2.2.0'
        mybatis_plus_boot_version = '1.0.5'
        activiti_starter_version = '6.0.0'
//        rabbitmq_version = '5.1.2'
        rocketmq_version = '4.2.0'
        xxljob_version = '1.9.0'
        swagger_version = '2.7.0'
        fastjson_version = '1.2.44'
        pinyin4j_version = '2.5.1'
//        kisso_version = '3.6.13'
        caffeine_version = '2.6.1'
        shiro_version = '1.4.0'
        dubbo_starter_version = '0.1.0'
        dubbo_version = "2.6.1"
    }
    repositories {
        mavenCentral()
        maven { url = 'http://repo.spring.io/plugins-release' }
    }
    dependencies {
        classpath 'io.spring.gradle:propdeps-plugin:0.0.9.RELEASE'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
        classpath "org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version"
    }
}

allprojects {
    group = "com.gxzc.zen"
    version = "1.0-SNAPSHOT"
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'kotlin'
    apply plugin: 'kotlin-kapt'
    apply plugin: 'kotlin-spring'
    apply plugin: 'org.springframework.boot'

    apply plugin: 'propdeps'
    apply plugin: 'propdeps-maven'
    apply plugin: 'propdeps-idea'
    apply plugin: 'propdeps-eclipse'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
    compileJava.dependsOn(processResources)

    repositories {
        mavenCentral()
        jcenter()
    }

    dependencies {
        // Kotlin
        compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version")
        compile("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")

        kapt "org.springframework.boot:spring-boot-configuration-processor"
        optional("org.springframework.boot:spring-boot-configuration-processor")
        // SpringBoot Starter
        compile('org.springframework.boot:spring-boot-starter')
        compile('org.springframework.boot:spring-boot-starter-web')
        compile('org.springframework.boot:spring-boot-starter-aop')
//        compile('org.springframework.boot:spring-boot-starter-amqp')
//        compile('org.springframework.boot:spring-boot-starter-jta-atomikos')
        compile('org.springframework.boot:spring-boot-starter-cache')
        compile('org.springframework.boot:spring-boot-starter-data-redis')

        testCompile('org.springframework.boot:spring-boot-starter-test')
//        testCompile("junit:junit:$junit_version")

        // session
//        compile('org.springframework.session:spring-session-data-redis')

        // mq
        compile("org.apache.rocketmq:rocketmq-client:$rocketmq_version")

        // shiro
        compile("org.apache.shiro:shiro-spring:$shiro_version")

        // commons
        compile("commons-io:commons-io:$commons_io_version")
        compile("org.apache.commons:commons-lang3:$commons_lang3_version")
        compile("commons-codec:commons-codec:$commons_codec_version")
        compile("commons-fileupload:commons-fileupload:$commons_fileupload_version")

        // logger
        compile("org.slf4j:slf4j-api:$slf4j_api_version")

        compile("javax.servlet:javax.servlet-api:3.1.0")
        compile("javax.servlet:servlet-api:2.5")

        // cache
        compile("com.github.ben-manes.caffeine:caffeine:$caffeine_version")
//        compile("org.ehcache:ehcache:$ehcache_version")
//        compile("net.sf.ehcache:ehcache-core:$ehcache_core_version")

        // db
        compile("mysql:mysql-connector-java:$mysql_connector_version")
        compile("com.alibaba:druid-spring-boot-starter:$alidruid_version")
        // compile("io.shardingjdbc:sharding-jdbc-core-spring-boot-starter:2.0.2")

        // mybatis-plus
        compile("com.baomidou:mybatis-plus:$mybatis_plus_version")
        compile("com.baomidou:mybatisplus-spring-boot-starter:$mybatis_plus_boot_version")

        // job
        compile("com.xuxueli:xxl-job-core:$xxljob_version")

        // swagger
        compile("io.springfox:springfox-swagger2:$swagger_version")
        compile("io.springfox:springfox-swagger-ui:$swagger_version")

        // utils
        compile("org.projectlombok:lombok:1.16.18")
//        compile("com.google.guava:guava:23.6-jre")
//        compile("com.github.penggle:kaptcha:2.3.2")
        compile("com.alibaba:fastjson:$fastjson_version")
        compile("com.belerweb:pinyin4j:$pinyin4j_version")
        compile('com.github.hotchemi:khronos:0.9.0')
        compile('com.github.shihyuho:jackson-dynamic-filter:1.0')

        // rpc
        compile("com.alibaba.boot:dubbo-spring-boot-starter:$dubbo_starter_version")
                {
                    exclude group: "com.alibaba", module: "dubbo"
                }
        compile("com.alibaba:dubbo:$dubbo_version")

        // activiti
//        compile("org.activiti:activiti-spring-boot-starter-basic:$activiti_starter_version")
//        compile("org.activiti:activiti-spring-boot-starter-rest-api:$activiti_starter_version")
//        compile("org.activiti:activiti-spring-boot-starter-actuator:$activiti_starter_version")

        compile("org.apache.velocity:velocity-engine-core:2.0")

        ext.jarTree = fileTree(dir: 'libs', include: '**/*.jar')
        compile jarTree
    }

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
}