7. Running your Application with Gradle
먼저 압축파일를 빌드하지 않고 애플리케이션을 실행하려면 bootRun 태스크를 사용하세요:
$ ./gradlew bootRun
bootRun 태스크는 JavaExec 하위 클래스인 BootRun의 인스턴스이다. 따라서, 그레이들에서 자바 프로세스를 실행하기 위한 일반적인 구성 옵션을 사용할 수 있다. 태스크는 메인 소스 세트(main source set)의 런타임 클래스 경로를 사용하도록 자동 구성된다.
기본적으로, 메인(main) 클래스는 태스크의 클래스 경로에 있는 디렉토리에서 public static void main(String[]) 메서드가 있는 클래스를 찾아 자동 구성된다.
기본 클래스는 태스크의 main 프로퍼티를 사용하여 명시적으로 구성할 수도 있다:
Groovy
tasks.named("bootRun") {
mainClass = 'com.example.ExampleApplication'
}
Kotlin
tasks.named<BootRun>("bootRun") {
mainClass.set("com.example.ExampleApplication")
}
또는, 스프링 부트 DSL의 mainClass 프로퍼티를 사용하여 메인(main) 클래스 이름을 프로젝트 전체에서 구성할 수 있다:
Groovy
springBoot {
mainClass = 'com.example.ExampleApplication'
}
Kotlin
springBoot {
mainClass.set("com.example.ExampleApplication")
}
기본적으로, bootRun은 개발 중에 더 빠른 시작을 위해 실행을 최적화하도록 JVM을 구성한다. 이 동작은 다음 예제와 같이, optimizeLaunch 프로퍼티를 사용하여 비활성화할 수 있다:
Groovy
tasks.named("bootRun") {
optimizedLaunch = false
}
Kotlin
tasks.named<BootRun>("bootRun") {
isOptimizedLaunch = false
}
application 플러그인이 적용된 경우, mainClass 프로퍼티를 구성해야 동일한 용도로 사용할 수 있다:
Groovy
application {
mainClass = 'com.example.ExampleApplication'
}
Kotlin
application {
mainClass.set("com.example.ExampleApplication")
}
7.1. Passing Arguments to your Application
JavaExec의 모든 태스크들과 마찬가지로, 그레이들 4.9 이상 버전을 사용할 때 --args='<arguments>'를 사용하여 명령줄에서 bootRun으로 인수를 전달할 수 있다. 예를 들어, dev라는 프로파일(profile)이 활성 상태인 애플리케이션을 실행하려면 다음 명령을 사용할 수 있다:
$ ./gradlew bootRun --args='--spring.profiles.active=dev'
자세한 내용은 JavaExec.setArgsString에 대한 자바독(javadoc)을 참조하자.
7.2. Passing System properties to your application
bootRun은 표준 JavaExec 태스크이므로, 빌드 스크립트에서 시스템 프로퍼티를 지정하여 애플리케이션의 JVM에 시스템 프로퍼티를 전달할 수 있다. 구성 가능한 시스템 프로퍼티 값을 만들려면 프로젝트 프로퍼티를 사용하여 해당 값을 설정한다. 프로젝트 프로퍼티를 선택 사항으로 허용하려면, findProperty를 사용하여 참조하자. 이렇게 하면 다음 예와 같이 ?: 엘비스(Elvis) 연산자를 사용하여 기본값을 제공할 수도 있다:
Groovy
tasks.named("bootRun") {
systemProperty 'com.example.property', findProperty('example') ?: 'default'
}
Kotlin
tasks.named<BootRun>("bootRun") {
systemProperty("com.example.property", findProperty("example") ?: "default")
}
앞의 예제는 com.example.property 시스템 프로퍼티를 example 프로젝트 프로퍼티 값으로 설정한다. 예제 프로젝트 프로퍼티가 설정되지 않은 경우 시스템 프로퍼티의 값은 default가 된다.
그레이들을 사용하면 다음 예제와 같이 -P 플래그를 사용하는 명령줄을 포함하여 다양한 방법으로 프로젝트 프로퍼티를 설정할 수 있다:
$ ./gradlew bootRun -Pexample=custom
앞의 example 프로젝트 프로퍼티의 값을 custom로 설정한다. 그러면 bootRun은 com.example.property 시스템 프로퍼티의 값으로 사용한다.
7.3. Reloading Resources
devtools이 프로젝트에 추가된 경우 애플리케이션의 클래스패스(classpath)에서 변경 사항을 자동으로 모니터링한다. 수정된 파일은 devtools로 재 로딩을 트리거하기 위해 업데이트할 클래스패스에 대해 다시 컴파일해야 하는 것을 알아두자. devtools 사용에 대한 자세한 내용은 레퍼런스 문서의 이 섹션을 참조하자.
또는, 애플리케이션의 스태틱(static) 리소스가 소스 위치에서 로드되도록 bootRun을 구성할 수 있다:
`Groovy`
tasks.named(“bootRun”) { sourceResources sourceSets.main }
`Kotlin`
tasks.named
이렇게 하면 라이브 애플리케이션에서 다시 로드할 수 있으므로 개발 시 도움이 될 수 있다.