From 6c318ebeae5382f7546d13231d1d7b41faf8ab2a Mon Sep 17 00:00:00 2001 From: jade Date: Thu, 10 Sep 2026 11:22:27 +0900 Subject: [PATCH] feat: generate pods with Maven library dependency --- .../dat/lib/util/NewPodProjectScaffolder.java | 19 +++++++++++-------- .../lib/util/NewPodProjectScaffolderTest.java | 14 +++++++++----- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/NewPodProjectScaffolder.java b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/NewPodProjectScaffolder.java index 9ac6a293..c59f1453 100644 --- a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/NewPodProjectScaffolder.java +++ b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/NewPodProjectScaffolder.java @@ -73,12 +73,6 @@ public final class NewPodProjectScaffolder { String serviceName = "was-" + shortName; write(root.resolve("settings.gradle"), """ rootProject.name = '%s' - - includeBuild('../dat-lib-datmt') { - dependencySubstitution { - substitute module('io.shinhanlife:dat-lib-datmt') using project(':dat-was-lib') - } - } """.formatted(moduleName)); write(root.resolve("build.gradle"), """ plugins { @@ -94,9 +88,16 @@ public final class NewPodProjectScaffolder { toolchain { languageVersion = JavaLanguageVersion.of(21) } } - repositories { mavenCentral() } + repositories { + // dat-lib-datmt에서 :dat-was-lib:publishToMavenLocal 실행 후 + // Maven Local의 io.shinhanlife:dat-lib-datmt JAR/POM을 사용합니다. + // 신한라이프 이관 시 mavenLocal() 대신 사내 Nexus repository를 추가합니다. + mavenLocal() + mavenCentral() + } dependencies { + // includeBuild 없이 Maven 좌표로만 공통 MCP Server와 연동 기능을 사용합니다. implementation 'io.shinhanlife:dat-lib-datmt:0.0.1-SNAPSHOT' } @@ -219,7 +220,9 @@ public final class NewPodProjectScaffolder { ## 공통 라이브러리 - 상위 workspace의 `dat-lib-datmt`를 Gradle composite build로 참조합니다. + `io.shinhanlife:dat-lib-datmt:0.0.1-SNAPSHOT` Maven 좌표로 공통 라이브러리를 참조합니다. + 로컬 개발에서는 먼저 `dat-lib-datmt`에서 `:dat-was-lib:publishToMavenLocal`을 실행한 뒤 이 프로젝트를 빌드합니다. + 신한라이프 이관 후에는 같은 Maven 좌표를 사내 Nexus에서 내려받도록 `mavenLocal()`을 Nexus repository로 교체합니다. ## 빌드 diff --git a/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/NewPodProjectScaffolderTest.java b/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/NewPodProjectScaffolderTest.java index cf447f64..74fda3f0 100644 --- a/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/NewPodProjectScaffolderTest.java +++ b/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/NewPodProjectScaffolderTest.java @@ -14,7 +14,7 @@ class NewPodProjectScaffolderTest { Path workspace; @Test - void createsStandaloneProjectWithCompositeBuild() throws Exception { + void createsStandaloneProjectWithMavenLibraryDependency() throws Exception { createLibraryProject(); String result = NewPodProjectScaffolder.scaffold(workspace, "dat-was-payment", 8099, "tester", "2026.09.09"); @@ -27,10 +27,14 @@ class NewPodProjectScaffolderTest { assertTrue(Files.exists(project.resolve("k8s/base/deployment.yaml"))); assertTrue(Files.exists(project.resolve("gradlew.bat"))); assertTrue(Files.exists(project.resolve("gradle/wrapper/gradle-wrapper.jar"))); - assertTrue(Files.readString(project.resolve("settings.gradle")) - .contains("includeBuild('../dat-lib-datmt')")); - assertTrue(Files.readString(project.resolve("build.gradle")) - .contains("io.shinhanlife:dat-lib-datmt:0.0.1-SNAPSHOT")); + String settings = Files.readString(project.resolve("settings.gradle")); + String build = Files.readString(project.resolve("build.gradle")); + assertTrue(!settings.contains("includeBuild('../dat-lib-datmt')")); + assertTrue(build.contains("mavenLocal()")); + assertTrue(build.contains("io.shinhanlife:dat-lib-datmt:0.0.1-SNAPSHOT")); + assertTrue(build.contains("publishToMavenLocal")); + assertTrue(Files.readString(project.resolve("README.md")).contains("publishToMavenLocal")); + assertTrue(!Files.readString(project.resolve("README.md")).contains("composite build")); assertTrue(Files.readString(project.resolve("src/main/resources/application.yml")) .contains("port: ${PORT:8099}")); assertTrue(Files.readString(project.resolve("src/main/resources/application.yml"))