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
이렇게 하면 라이브 애플리케이션에서 다시 로드할 수 있으므로 개발 시 도움이 될 수 있다.