목차

SpringBoot and Gradle

Dependency Version Override

의존 라이브러리의 버전을 다른 것으로 바꾸고자 한다면 property를 변경하면 된다.

// 하이버네이트 버전
ext['hibernate.version'] = '5.2.14.Final'

혹은 프로젝트의 gradle.properties 에 설정할수도 있다.

hibernate.version=5.2.14.Final
// slf4j.version 의 값을 읽을 때는
def slf4jVersion = dependencyManagement.importedProperties['slf4j.version']

라이브러리성 모듈 설정

bootJar.enabled = false
jar.enabled = true
bootJar.enabled = true
jar.enabled = false

BootRun

profile 지정

SPRING_PROFILES_ACTIVE=<PROFILE> ./gradlew bootRun

Debug Mode

bootRun {
    if (project.hasProperty("bootDebug")) {
        jvmArgs = ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"]
    }
}
 
// suspend=y는 JVM이 뜰 때 Remote Debugger가 접속될 때까지 기다린다.
// 실행 후 바로 종료하는 명령행 애플리케이션의 경우 무조건 y
# -PbootDebug 프라퍼티를 지정하면 디버그 모드로 뜬다.
./gradlew bootRun -PbootDebug

Application Arguments

bootRun {
    if (project.hasProperty('args')) {
        args project.args.split(',')
    }
}

위와 같이 설정하고, 아래와 같은 형태로 실행한다.

./gradlew bootRun -Pargs=param1,param2,...

Property Override

Environment Variable 사용

SPRING_PROFILES_ACTIVE=test gradle clean bootRun

// on Windows
SET SPRING_PROFILES_ACTIVE=test
gradle clean bootRun

Gradle 에 System Property 그대로 계승

bootRun.systemProperties = System.properties

새로운 bootRun Task 로 만들어버리기

task bootRunDev(type: org.springframework.boot.gradle.tasks.run.BootRun, dependsOn: 'build') {
    group = 'Application'

    doFirst() {
        main = bootJar.mainClassName
        classpath = sourceSets.main.runtimeClasspath
        systemProperty 'spring.profiles.active', 'dev'
        systemProperty 'debug', 'true'
    }
}

bootJar 파일을 별도 파일로 복사하기

task copyBootJarNormalizedName(type: Copy) {
    from bootJar.archiveFile
    into "${buildDir}"
    rename { 'my.jar' }
    dependsOn bootJar
}

참조