buildscript {
  ext {
    springBootVersion = '2.0.2.RELEASE'
  }
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
  }
}

plugins {
    id "com.github.hierynomus.license" version "0.14.0"
    id "com.moowork.node" version "1.1.0"
    id "java"
    id "eclipse"
    id "idea"
}

repositories {
    maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
    maven { url "https://dl.bintray.com/streamnative/maven" }
    jcenter()
}

configurations {
    testPlugins {}
}

dependencies {
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.8.1'
}

apply from: 'gradle/license.gradle'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

task licenseFormatNode(type: com.hierynomus.gradle.license.tasks.LicenseFormat) {
    source = fileTree(dir: "src").include("**/*")
    source = fileTree(dir: "front-end/src").include("**/*")
}
licenseFormat.dependsOn licenseFormatNode

task licenseCheckNode(type: com.hierynomus.gradle.license.tasks.LicenseCheck) {
    source = fileTree(dir: "src").include("**/*")
}

dependencyManagement {
  imports {
    mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
    mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Finchley.SR2'
  }
  applyMavenExclusions = false
}

dependencies {
    compile group: 'org.springframework.boot', name: 'spring-boot-starter', version: springBootVersion
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: springBootVersion
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion
    compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: springBootVersion
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-netflix-zuul', version: springBootVersion
    compile group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: springMybatisVersion
    compile group: 'mysql', name: 'mysql-connector-java', version: mysqlConnectorVersion
    compile group: 'javax.validation', name: 'validation-api', version: javaxValidationVersion
    compile group: 'io.jsonwebtoken', name: 'jjwt', version: jsonWebTokenVersion
    compile group: 'org.xerial', name: 'sqlite-jdbc', version: sqliteVersion
    compile group: 'com.github.pagehelper', name: 'pagehelper-spring-boot-starter', version: pageHelperVersion
    compile group: 'org.mockito', name: 'mockito-core', version: mockitoVersion
    compile group: 'com.google.guava', name: 'guava', version: guavaVersion
    compile group: 'com.google.code.gson', name: 'gson', version: gsonVersion
    compile group: 'org.apache.pulsar', name: 'pulsar-client', version: pulsarVersion
    compile group: 'org.apache.pulsar', name: 'pulsar-common', version: pulsarVersion
    compile group: 'io.springfox', name: 'springfox-swagger2', version: swagger2Version
    compile group: 'io.springfox', name: 'springfox-swagger-ui', version: swaggeruiVersion
    compile group: 'org.powermock', name: 'powermock-api-mockito', version: apiMockitoVersion
    compile group: 'org.powermock', name: 'powermock-module-junit4', version: mockitoJunit4Version
    compileOnly group: 'org.projectlombok', name: 'lombok', version: lombokVersion
}
