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

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
//add tasks thinJar and thinResolve for thin JAR deployments
apply plugin: 'org.springframework.boot.experimental.thin-launcher'

group = 'com.baeldung'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

springBoot {
    mainClass = 'com.baeldung.DemoApplication'
}

tasks.named("bootJar") {
//    This is overridden by the mainClass in springBoot{} and added here for reference purposes.
    mainClass = 'com.baeldung.DemoApplication'

//    This block serves the same purpose as the above thus commented out. Added here for reference purposes
//    manifest {
//        attributes 'Start-Class': 'com.baeldung.DemoApplication'
//    }
}

//Enable this to generate and use a pom.xml file
apply plugin: 'maven'

//If you want to customize the generated pom.xml you can edit this task and add it as a dependency to the bootJar task
task createPom {
    def basePath = 'build/resources/main/META-INF/maven'
    doLast {
        pom {
            withXml(dependencyManagement.pomConfigurer)
        }.writeTo("${basePath}/${project.group}/${project.name}/pom.xml")
    }
}
//Uncomment the following to use your custom generated pom.xml
bootJar.dependsOn = [createPom]

//Enable this to generate and use a thin.properties file
//bootJar.dependsOn = [thinProperties]
