buildscript {
	ext {
		queryDslVersion = "5.0.0"
	}
}

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.1'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.gongjakso'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}

}

configurations.configureEach {
	exclude group: 'commons-logging', module: 'commons-logging'
}

repositories {
	mavenCentral()
}

dependencies {
	// Spring Boot Default
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.springframework.security:spring-security-test'
	implementation 'org.springframework.boot:spring-boot-starter-cache'
	implementation 'org.springframework.boot:spring-boot-starter-mail'

	// Lombok
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'

	// MySQL
	runtimeOnly 'com.mysql:mysql-connector-j'

	// Redis
	implementation 'org.springframework.boot:spring-boot-starter-data-redis'

	// JWT
	implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
	runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
	runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

	// Swagger UI - spring doc
	implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

	// Spring Security + OAuth
	implementation 'org.springframework.boot:spring-boot-starter-security'
	implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
	implementation 'org.springframework.boot:spring-boot-starter-webflux'

	// MAC OS
	implementation 'io.netty:netty-resolver-dns-native-macos:4.1.68.Final:osx-aarch_64'

	// AWS
	implementation 'com.amazonaws:aws-java-sdk-s3:1.12.661'

	// Prometheus + Grafana
	implementation 'org.springframework.boot:spring-boot-starter-actuator'
	runtimeOnly 'io.micrometer:micrometer-registry-prometheus'

	// Querydsl
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
	annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"

	// Json Type Parsing
	implementation 'com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations'

	// Quartz
	implementation 'org.springframework.boot:spring-boot-starter-quartz:2.7.5'
}


tasks.named('test') {
	useJUnitPlatform()
}