plugins {
	id 'java'
	id 'org.springframework.boot' version '3.5.7'
	id 'io.spring.dependency-management' version '1.1.7'
	id 'com.diffplug.spotless' version '6.25.0'
}

group = 'com.kamco.cd'
version = '0.0.1-SNAPSHOT'
description = 'kamco-back'

java {
	toolchain {
		languageVersion = JavaLanguageVersion.of(21)
	}
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'org.postgresql:postgresql'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
  implementation 'org.springframework.boot:spring-boot-starter-validation'

	//geometry
	implementation 'com.fasterxml.jackson.core:jackson-databind'
	implementation 'org.locationtech.jts.io:jts-io-common:1.20.0'
	implementation 'org.locationtech.jts:jts-core:1.19.0'
  implementation 'org.hibernate:hibernate-spatial:6.2.7.Final'

	//  QueryDSL JPA
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'

	//  Q클래스 생성용 annotationProcessor
	annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
	annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
	annotationProcessor 'jakarta.persistence:jakarta.persistence-api'

	// actuator
	implementation 'org.springframework.boot:spring-boot-starter-actuator'

	// SpringDoc OpenAPI (Swagger)
	implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'

	// Apache Commons Compress for archive handling
	implementation 'org.apache.commons:commons-compress:1.26.0'

  // crypto
  implementation 'org.springframework.security:spring-security-crypto'
}

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


bootJar {
	archiveFileName = 'ROOT.jar'
}

// Spotless configuration for code formatting (2-space indent)
spotless {
  java {
    target 'src/**/*.java'
    googleJavaFormat('1.19.2')  // Default Google Style = 2 spaces (NO .aosp()!)
    trimTrailingWhitespace()
    endWithNewline()
  }
}

// Run spotlessCheck before build
tasks.named('build') {
	dependsOn 'spotlessCheck'
}
