feat: generate pods with Maven library dependency
Some checks failed
Deploy to OCIWP / deploy (push) Failing after 28s

This commit is contained in:
jade
2026-09-10 11:22:27 +09:00
parent 17d9f3cb77
commit 6c318ebeae
2 changed files with 20 additions and 13 deletions

View File

@@ -73,12 +73,6 @@ public final class NewPodProjectScaffolder {
String serviceName = "was-" + shortName; String serviceName = "was-" + shortName;
write(root.resolve("settings.gradle"), """ write(root.resolve("settings.gradle"), """
rootProject.name = '%s' rootProject.name = '%s'
includeBuild('../dat-lib-datmt') {
dependencySubstitution {
substitute module('io.shinhanlife:dat-lib-datmt') using project(':dat-was-lib')
}
}
""".formatted(moduleName)); """.formatted(moduleName));
write(root.resolve("build.gradle"), """ write(root.resolve("build.gradle"), """
plugins { plugins {
@@ -94,9 +88,16 @@ public final class NewPodProjectScaffolder {
toolchain { languageVersion = JavaLanguageVersion.of(21) } 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 { dependencies {
// includeBuild 없이 Maven 좌표로만 공통 MCP Server와 연동 기능을 사용합니다.
implementation 'io.shinhanlife:dat-lib-datmt:0.0.1-SNAPSHOT' 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로 교체합니다.
## 빌드 ## 빌드

View File

@@ -14,7 +14,7 @@ class NewPodProjectScaffolderTest {
Path workspace; Path workspace;
@Test @Test
void createsStandaloneProjectWithCompositeBuild() throws Exception { void createsStandaloneProjectWithMavenLibraryDependency() throws Exception {
createLibraryProject(); createLibraryProject();
String result = NewPodProjectScaffolder.scaffold(workspace, "dat-was-payment", 8099, String result = NewPodProjectScaffolder.scaffold(workspace, "dat-was-payment", 8099,
"tester", "2026.09.09"); "tester", "2026.09.09");
@@ -27,10 +27,14 @@ class NewPodProjectScaffolderTest {
assertTrue(Files.exists(project.resolve("k8s/base/deployment.yaml"))); assertTrue(Files.exists(project.resolve("k8s/base/deployment.yaml")));
assertTrue(Files.exists(project.resolve("gradlew.bat"))); assertTrue(Files.exists(project.resolve("gradlew.bat")));
assertTrue(Files.exists(project.resolve("gradle/wrapper/gradle-wrapper.jar"))); assertTrue(Files.exists(project.resolve("gradle/wrapper/gradle-wrapper.jar")));
assertTrue(Files.readString(project.resolve("settings.gradle")) String settings = Files.readString(project.resolve("settings.gradle"));
.contains("includeBuild('../dat-lib-datmt')")); String build = Files.readString(project.resolve("build.gradle"));
assertTrue(Files.readString(project.resolve("build.gradle")) assertTrue(!settings.contains("includeBuild('../dat-lib-datmt')"));
.contains("io.shinhanlife:dat-lib-datmt:0.0.1-SNAPSHOT")); 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")) assertTrue(Files.readString(project.resolve("src/main/resources/application.yml"))
.contains("port: ${PORT:8099}")); .contains("port: ${PORT:8099}"));
assertTrue(Files.readString(project.resolve("src/main/resources/application.yml")) assertTrue(Files.readString(project.resolve("src/main/resources/application.yml"))