group = "space.nstart.pcp"

plugins {
	kotlin("jvm")
	kotlin("plugin.spring")
	kotlin("plugin.jpa")
	kotlin("plugin.lombok")
	id("org.springframework.boot")
	id("io.spring.dependency-management")
}

version = "1.0.0"


kotlin {
	compilerOptions {
		freeCompilerArgs.addAll("-Xjsr305=strict")
	}
}

configurations {
	compileOnly {
		extendsFrom(configurations.annotationProcessor.get())
	}
}

dependencies {
	implementation(project(":libs:pcp-types-lib"))
	implementation(project(":libs:ballistics-lib"))
	implementation("${property("dep.spring.actuator")}")
	implementation("org.springframework.boot:spring-boot-starter-logging")
	implementation("org.springframework.boot:spring-boot-starter-validation")
	implementation("org.springframework.boot:spring-boot-starter-web")
	implementation("jakarta.validation:jakarta.validation-api")

	implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
	implementation("org.springframework.boot:spring-boot-starter-webflux")
	implementation("org.springdoc:springdoc-openapi-starter-webflux-ui:${property("versions.open-api")}")

	implementation("org.springframework.boot:spring-boot-starter")
	implementation("org.springframework.kafka:spring-kafka")
	implementation("io.camunda:camunda-spring-boot-4-starter:8.8.10")
	implementation("org.springframework.cloud:spring-cloud-starter-config")


	implementation("org.locationtech.jts:jts-core:1.19.0")


	testImplementation("junit:junit")
	testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
	testImplementation("org.springframework.boot:spring-boot-starter-test")
	testImplementation("org.springframework.security:spring-security-test")
	testImplementation("org.testcontainers:junit-jupiter")
	testRuntimeOnly("com.h2database:h2")

	implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
	implementation("org.springframework.boot:spring-boot-starter-flyway")
	implementation("org.flywaydb:flyway-database-postgresql")
	runtimeOnly("org.postgresql:postgresql")
	implementation("jakarta.validation:jakarta.validation-api")
	implementation("org.springframework.boot:spring-boot-starter-data-jpa")

	testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

dependencyManagement {
	imports {
		mavenBom("org.springframework.cloud:spring-cloud-dependencies:${property("versions.spring.cloud")}")
		mavenBom("org.testcontainers:testcontainers-bom:${property("versions.testcontainers")}")
	}
}

tasks.withType<Jar> {
	manifest {
		attributes["Built-By"] = "nstart"
		attributes["Implementation-Version"] = archiveVersion
	}
}

tasks.withType<Test> {
	useJUnitPlatform()
}
