Gradle 빌드 설정
프로젝트 기본 정보
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.5'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.scraping'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
핵심 의존성
| 의존성 | 역할 |
|---|---|
spring-boot-starter-webmvc | Spring MVC (컨트롤러, REST API) |
spring-boot-starter-thymeleaf | 서버사이드 템플릿 엔진 |
thymeleaf-layout-dialect:4.0.1 | Thymeleaf 레이아웃 방언 (Groovy 5 호환) |
spring-boot-starter-data-jpa | JPA/Hibernate ORM |
mybatis-spring-boot-starter | MyBatis SQL 매퍼 |
spring-boot-starter-batch | 배치/스케줄러 |
spring-boot-starter-mail | 이메일 발송 |
spring-ai-starter-model-anthropic | Claude AI API (Spring AI) |
jsoup | HTML 파싱 |
flexmark-all:0.64.8 | Markdown → HTML 변환 |
의존성 추가 규칙
Spring Boot BOM 관리 범위 내 라이브러리
// 버전 명시 불필요 (BOM이 관리)
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-webmvc'
BOM 외부 라이브러리
// 버전 명시 필수
implementation 'org.jsoup:jsoup:1.17.2'
implementation 'com.vladsch.flexmark:flexmark-all:0.64.8'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:4.0.1'
Spring AI BOM
ext {
set('springAiVersion', "2.0.0-M4")
}
dependencyManagement {
imports {
mavenBom "org.springframework.ai:spring-ai-bom:${springAiVersion}"
}
}
// Spring AI 의존성 — 버전 BOM에서 관리
implementation 'org.springframework.ai:spring-ai-starter-model-anthropic'
주요 빌드 명령
# 컴파일만 (에러 확인)
./gradlew compileJava
# 테스트 실행
./gradlew test
# 실행 가능한 JAR 생성 (배포용)
./gradlew bootJar
# 테스트 제외 전체 빌드
./gradlew build -x test
# 로컬 실행
./gradlew bootRun
# 특정 프로파일로 로컬 실행
./gradlew bootRun --args='--spring.profiles.active=local'
# 의존성 트리 확인
./gradlew dependencies
# 특정 설정 의존성 확인
./gradlew dependencies --configuration runtimeClasspath
# 빌드 캐시 초기화
./gradlew clean
새 의존성 추가 체크리스트
- [ ] Maven Central 또는 mvnrepository.com에서 최신 안정 버전 확인
- [ ] 알려진 CVE 취약점 버전 사용 금지 (ossindex.sonatype.org 확인)
- [ ] Spring Boot BOM 관리 범위 내인지 확인 (버전 명시 여부 결정)
- [ ]
./gradlew compileJava로 컴파일 확인
로컬 개발 환경
Java 17 설치 확인
java -version
# openjdk version "17.x.x" 이상이어야 함
Gradle Wrapper 사용
# ./gradlew 사용 (로컬 Gradle 설치 불필요)
./gradlew --version
IntelliJ IDEA 설정
- Build, Execution, Deployment > Build Tools > Gradle
- Build and run using:
Gradle - Run tests using:
Gradle - Gradle JVM:
Project SDK (17)
- Build and run using:
File > Sync Project with Gradle Files
H2 인메모리 DB (개발용)
# application-local.yml — 로컬 개발 시 H2 사용 (MySQL 없이 실행)
spring:
datasource:
url: jdbc:h2:mem:testdb;MODE=MySQL
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
hibernate:
ddl-auto: create-drop
show-sql: true
h2:
console:
enabled: true # http://localhost:8080/h2-console
Thymeleaf Layout Dialect 주의사항
이 프로젝트는 thymeleaf-layout-dialect:4.0.1 (Groovy 5 호환)을 사용한다.
<!-- 4.0.x 기준 — <title> 태그 안에 layout:title-pattern 사용 -->
<title layout:title-pattern="$CONTENT_TITLE — jihwan.dev">jihwan.dev</title>
이전 버전(3.x)의 <head> 속성 방식과 다르므로 주의한다.