You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.6 KiB
91 lines
2.6 KiB
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile |
|
|
|
plugins { |
|
id("org.springframework.boot") version "3.2.2" |
|
id("io.spring.dependency-management") version "1.1.4" |
|
kotlin("jvm") version "1.9.22" |
|
kotlin("plugin.spring") version "1.9.22" |
|
kotlin("plugin.jpa") version "1.9.22" |
|
|
|
id("org.liquibase.gradle") version "2.2.1" |
|
} |
|
|
|
group = "com.example" |
|
version = "0.0.1-SNAPSHOT" |
|
|
|
java { |
|
sourceCompatibility = JavaVersion.VERSION_21 |
|
} |
|
|
|
repositories { |
|
mavenCentral() |
|
} |
|
|
|
dependencies { |
|
implementation("org.jetbrains.kotlin:kotlin-reflect") |
|
|
|
implementation("org.springframework.boot:spring-boot-starter-data-jpa") |
|
implementation("org.springframework.boot:spring-boot-starter-validation") |
|
|
|
liquibaseRuntime("org.liquibase:liquibase-core") |
|
liquibaseRuntime("org.liquibase.ext:liquibase-hibernate6:4.25.1") |
|
liquibaseRuntime("info.picocli:picocli:4.6.3") |
|
liquibaseRuntime("com.h2database:h2") |
|
liquibaseRuntime("org.postgresql:postgresql") |
|
|
|
testImplementation("org.springframework.boot:spring-boot-starter-test") |
|
} |
|
|
|
tasks.withType<KotlinCompile> { |
|
kotlinOptions { |
|
freeCompilerArgs += "-Xjsr305=strict" |
|
jvmTarget = "21" |
|
} |
|
} |
|
|
|
tasks.withType<Test> { |
|
useJUnitPlatform() |
|
} |
|
|
|
liquibase { |
|
val profile = System.getProperty("profile") ?: "local" |
|
|
|
// TODO: db.yaml objectMapper 로 읽어서 세팅? |
|
activities.register("local") { |
|
this.arguments = mapOf( |
|
"url" to "jdbc:postgresql://localhost:15432/localdb", |
|
"username" to "flower", |
|
"password" to "flower" |
|
) |
|
} |
|
activities.register("dev") { |
|
this.arguments = mapOf( |
|
"url" to "jdbc:postgresql://flower-fragrance-stage.cluster-cbth1bnhfbdg.ap-northeast-2.rds.amazonaws.com:5432/devdb", |
|
"username" to "anypoint", |
|
"password" to "*emflaj*" |
|
) |
|
} |
|
runList = profile |
|
} |
|
|
|
fun addArguments(name: String, args: Map<String, String>) { |
|
val activity = liquibase.activities.getByName(name) |
|
activity.name = name |
|
val activityArgs = activity.arguments as Map<*, *> |
|
val newArgs = mutableMapOf<String, String>() |
|
newArgs.putAll(activityArgs.map { it.key as String to it.value as String }) |
|
newArgs.putAll(args) |
|
|
|
newArgs.forEach { |
|
println("arguments[\"${it.key}\"]=\"${it.value}\"") |
|
} |
|
|
|
activity.arguments = newArgs |
|
} |
|
|
|
tasks.getByName("generateChangelog").doFirst { |
|
val changeLogFile = "src/main/resources/liquibase/postgres/changelog/generated.yaml" |
|
delete(changeLogFile) |
|
val name = System.getProperty("name") ?: "local" |
|
addArguments(name, mapOf("changeLogFile" to changeLogFile)) |
|
}
|
|
|