====== SpringBoot and Gradle ====== * [[springframework:springboot|SpringBoot]] and [[:gradle|Gradle]] ===== Dependency Version Override ===== 의존 라이브러리의 버전을 다른 것으로 바꾸고자 한다면 property를 변경하면 된다. // 하이버네이트 버전 ext['hibernate.version'] = '5.2.14.Final' 혹은 프로젝트의 ''gradle.properties'' 에 설정할수도 있다. hibernate.version=5.2.14.Final * [[https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-dependency-versions.html|Dependency versions]] 여기서 버전 프라퍼티 목록을 알 수 있다. * Gradle 에서 SpringBoot 버전 프라퍼티의 값을 읽고자 한다면 // slf4j.version 의 값을 읽을 때는 def slf4jVersion = dependencyManagement.importedProperties['slf4j.version'] ===== 라이브러리성 모듈 설정 ===== * 라이브러리성 모듈인데 ''org.springframework.boot:spring-boot-starter-web'' 같은 것을 포함할 경우 자동으로 ''bootJar''가 활성화 되고 ''jar''가 꺼지게 되는데 이렇게 되면 올바르게 라이브러리로서 기능할 수 없게 된다. * 이 경우 ''jar''만 활성화해야한다. bootJar.enabled = false jar.enabled = true * 말단 배포 모듈(''main'' 이 존재하는 모듈, web, batch 등.)은 이 값을 반대로 해야한다.(기본으로 그렇게 됨) bootJar.enabled = true jar.enabled = false ===== BootRun ===== ==== profile 지정 ==== SPRING_PROFILES_ACTIVE= ./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 ==== * [[https://www.baeldung.com/spring-boot-command-line-arguments|Command-line Arguments in Spring Boot | Baeldung]] bootRun { if (project.hasProperty('args')) { args project.args.split(',') } } 위와 같이 설정하고, 아래와 같은 형태로 실행한다. ./gradlew bootRun -Pargs=param1,param2,... ==== Property Override ==== * [[https://stackoverflow.com/questions/36923288/how-to-run-bootrun-with-spring-profile-via-gradle-task|java - How to run bootRun with spring profile via gradle task - Stack Overflow]] === 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 로 만들어버리기 === * 새로운 ''bootRun'' 태스크를 만들고, 거기에 각종 기본 설정 추가 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 } ===== 참조 ===== * [[https://guides.gradle.org/building-spring-boot-2-projects-with-gradle/|Building Spring Boot 2 Applications with Gradle]] * [[https://www.baeldung.com/spring-boot-gradle-plugin|Spring Boot Gradle Plugin]]