diegolirio / kotlin-spring-boot

Kotlin and Spring-Boot
0 stars 0 forks source link

Gradle DSL Kotlin #1

Open ddamacena-zz opened 3 years ago

ddamacena-zz commented 3 years ago

Criando Modulo Gradle DSL Kotlin

No intellij project => New => Module...:

Screen Shot 2021-08-13 at 14 06 52

Selecione Gradle e Module SDK (no caso do exemplo é SDK 11) e como Additional Libraries selecione Kotlin/JVM:

Screen Shot 2021-08-13 at 14 10 09

Agora Diigite o nome do Seu Domain:

Screen Shot 2021-08-13 at 14 10 47

No arquivo settings.gradle.kts será incluído seu sub-projeto domain:

rootProject.name = "customer-dynamodb-redis-kafka-pix"
include("domain")

No arquivo build.gradle.kts do Projeto Principal adicione o allprojects:

allprojects {
    group = "com.example"
    version = "1.0.0"

    tasks.withType<JavaCompile> {
        sourceCompatibility = "11"
        targetCompatibility = "11"
    }

    tasks.withType<KotlinCompile> {
        kotlinOptions {
            freeCompilerArgs = listOf("-Xjsr305=strict")
            jvmTarget = "11"
        }
    }
}

E buildScript:

buildscript {
    repositories {
        mavenCentral()
    }
}

Arquivo completo: https://github.com/diegolirio/kotlin-spring-boot/blob/master/customer-dynamodb-redis-kafka-pix/build.gradle.kts.

Sub Projeto Domain

No build.gradle.kts deverá ter algumas dependencias e deverá ser evitado frameworks e muitas libs:

plugins {
    kotlin("jvm")
}

dependencies {
    implementation(kotlin("stdlib"))
    implementation(kotlin("reflect"))
    implementation("javax.inject:javax.inject:1")
}

Estrutura Domain:

Screen Shot 2021-08-13 at 14 20 01

Sub Projeto Application

As dependencias que normalmente são utilizadas no Projeto Principal agora fica em uma camada a parte chamada Application que contem os Frameworks de apoio a aplicação.

plugins {
    id("org.springframework.boot")

    kotlin("jvm")
    kotlin("plugin.spring")
}

dependencies {
    implementation(project(":domain"))
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    implementation("org.springframework.boot:spring-boot-starter-data-redis")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    runtimeOnly("io.micrometer:micrometer-registry-new-relic")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    implementation("com.amazonaws:aws-java-sdk-dynamodb:1.11.740")
    implementation("com.amazonaws:aws-java-sdk-core:1.11.740")
}