build.gradle:
- shedlock-spring 5.16.0
- shedlock-provider-redis-spring 5.16.0
TastebyApplication: @EnableSchedulerLock(defaultLockAtMostFor=PT15M)
ShedLockConfig 신규: RedisLockProvider Bean (in-cluster Redis 재사용)
DaemonScheduler.run:
- @SchedulerLock(name="daemon-runner", lockAtMostFor=PT15M, lockAtLeastFor=PT30S)
- 멀티 파드 환경(RollingUpdate 등)에서 한 인스턴스만 실행
- Redis 키: lock:daemon-runner
설계서: docs/design/335-daemon-distributed-lock/README.md (commit c88cb6a)
Refs: #335 (Developer 단계)
76 lines
2.5 KiB
Groovy
76 lines
2.5 KiB
Groovy
plugins {
|
|
id 'java'
|
|
id 'org.springframework.boot' version '3.3.5'
|
|
id 'io.spring.dependency-management' version '1.1.6'
|
|
}
|
|
|
|
group = 'com.tasteby'
|
|
version = '0.1.0'
|
|
|
|
java {
|
|
toolchain {
|
|
languageVersion = JavaLanguageVersion.of(21)
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
dependencies {
|
|
// Spring Boot
|
|
implementation 'org.springframework.boot:spring-boot-starter-web'
|
|
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
|
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
|
|
|
// MyBatis
|
|
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.4'
|
|
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
|
|
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
|
|
|
// #335 — 분산 락 (RollingUpdate 시 멀티 파드 공존 중 데몬 중복 실행 차단)
|
|
implementation 'net.javacrumbs.shedlock:shedlock-spring:5.16.0'
|
|
implementation 'net.javacrumbs.shedlock:shedlock-provider-redis-spring:5.16.0'
|
|
|
|
// Oracle JDBC + Security (Wallet support for Oracle ADB)
|
|
implementation 'com.oracle.database.jdbc:ojdbc11:23.7.0.25.01'
|
|
implementation 'com.oracle.database.security:oraclepki:23.7.0.25.01'
|
|
|
|
// JWT
|
|
implementation 'io.jsonwebtoken:jjwt-api:0.12.6'
|
|
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.6'
|
|
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.6'
|
|
|
|
// Google OAuth2 token verification
|
|
implementation 'com.google.api-client:google-api-client:2.7.0'
|
|
|
|
// OCI SDK (GenAI for LLM + Embeddings)
|
|
implementation 'com.oracle.oci.sdk:oci-java-sdk-generativeaiinference:3.49.0'
|
|
implementation 'com.oracle.oci.sdk:oci-java-sdk-common:3.49.0'
|
|
implementation 'com.oracle.oci.sdk:oci-java-sdk-common-httpclient-jersey3:3.49.0'
|
|
|
|
// Jackson for JSON
|
|
implementation 'com.fasterxml.jackson.core:jackson-databind'
|
|
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
|
|
|
|
// YouTube Transcript API (Java port of youtube-transcript-api)
|
|
implementation 'io.github.thoroldvix:youtube-transcript-api:0.4.0'
|
|
|
|
// Playwright (browser-based transcript fallback)
|
|
implementation 'com.microsoft.playwright:playwright:1.49.0'
|
|
|
|
// HTTP client for YouTube/Google APIs
|
|
implementation 'org.springframework.boot:spring-boot-starter-webflux'
|
|
|
|
// Lombok
|
|
compileOnly 'org.projectlombok:lombok'
|
|
annotationProcessor 'org.projectlombok:lombok'
|
|
|
|
// Test
|
|
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
|
}
|
|
|
|
tasks.named('test') {
|
|
useJUnitPlatform()
|
|
}
|