chore: align scaffold gradle with tool standard
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 1m38s

This commit is contained in:
jade
2026-08-07 16:56:07 +09:00
parent 782dee0d19
commit 7c9077dbd1
7 changed files with 120 additions and 59 deletions

View File

@@ -1,41 +1,55 @@
plugins {
// Gateway와 모든 Tool Pod가 의존하는 공통 라이브러리 모듈입니다.
id 'java-library'
}
dependencies {
// 공통 REST Controller, HTTP Client, 예외 처리 기반입니다.
api 'org.springframework.boot:spring-boot-starter-web'
// Tool Request DTO의 Bean Validation을 지원합니다.
api 'org.springframework.boot:spring-boot-starter-validation'
// Tool Manifest/Registry 캐시 및 Redis 기반 공통 기능을 제공합니다.
api 'org.springframework.boot:spring-boot-starter-data-redis'
// Tool SLA, 로깅, 공통 Aspect를 적용합니다.
api 'org.springframework.boot:spring-boot-starter-aop'
// MCI/DB 연동에 필요한 JDBC 공통 기능입니다.
api 'org.springframework.boot:spring-boot-starter-jdbc'
// Tool 호출의 Circuit Breaker, Rate Limit, Retry 등 복원력 기능입니다.
api 'io.github.resilience4j:resilience4j-spring-boot3:2.2.0'
api 'io.github.resilience4j:resilience4j-core:2.2.0'
api 'io.github.resilience4j:resilience4j-circuitbreaker:2.2.0'
api 'io.github.resilience4j:resilience4j-ratelimiter'
api 'io.github.resilience4j:resilience4j-retry:2.2.0'
api 'org.springframework.boot:spring-boot-starter-aop'
api 'org.springframework.boot:spring-boot-starter-jdbc'
// MCI/업무 데이터 접근을 위한 MyBatis 지원입니다.
api 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
// 현재 로컬 테스트 DB 및 SQL 로그 처리에 사용합니다.
api 'com.h2database:h2'
api 'p6spy:p6spy:3.9.1'
// Spring Data Redis가 사용하는 Redis Client를 공통 모듈에서 직접 참조합니다.
api 'io.lettuce:lettuce-core:6.6.0.RELEASE'
api "org.mapstruct:mapstruct:1.5.5.Final"
// MCI XML 전문, JSON Tool Schema/Manifest 처리에 사용합니다.
api 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.17.1'
api 'com.fasterxml.jackson.core:jackson-databind:2.17.1'
api 'com.networknt:json-schema-validator:3.0.0'
// Tool Pod의 /mcp Streamable HTTP Server와 MCP SDK를 제공합니다.
api 'org.springframework.ai:spring-ai-starter-mcp-server-webmvc'
// Spring AI 1.1.x에서 @McpTool, @McpToolParam, metaProvider를 제공합니다.
api 'org.springaicommunity:mcp-annotations:0.9.0'
// 이벤트 기반 확장이 필요한 Tool의 공통 Kafka 연동 기능입니다.
api 'org.springframework.kafka:spring-kafka:3.2.0'
// Tool Pod REST API 문서 및 Swagger UI를 제공합니다.
api 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0'
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testCompileOnly 'org.projectlombok:lombok:1.18.32'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.32'
}

View File

@@ -46,7 +46,11 @@ public class PodScaffolder {
public static String scaffoldPod(String moduleName, String portStr, String shortName, String author, String createDate) throws IOException {
String envSourceDir = System.getenv("AXHUB_SOURCE_DIR");
Path rootDir = envSourceDir != null ? Paths.get(envSourceDir) : Paths.get(".");
return scaffoldPod(rootDir, moduleName, portStr, shortName, author, createDate);
}
static String scaffoldPod(Path rootDir, String moduleName, String portStr, String shortName,
String author, String createDate) throws IOException {
Path modulePath = rootDir.resolve(Paths.get(moduleName));
if (Files.exists(modulePath)) {
return "[오류] 이미 존재하는 모듈입니다: " + moduleName;
@@ -59,15 +63,14 @@ public class PodScaffolder {
log.append("[2/6] build.gradle 생성 중...\n");
String buildGradle = """
plugins {
// Spring Boot 3.5.11 version is managed by the root build.gradle.
id 'org.springframework.boot'
}
dependencies {
// Shared MCP, Glow integration, validation, logging, Lombok and MapStruct configuration.
implementation project(':dap-was-lib')
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32'
}
""";
Files.writeString(modulePath.resolve("build.gradle"), buildGradle);

View File

@@ -0,0 +1,26 @@
package io.shinhanlife.dap.lib.util;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.nio.file.Files;
import java.nio.file.Path;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
class PodScaffolderTest {
@TempDir
Path root;
@Test
void generatesBuildGradleUsingRepositoryStandard() throws Exception {
PodScaffolder.scaffoldPod(root, "dap-was-sample", "8099", "sample", "tester", "2026.08.07");
String buildGradle = Files.readString(root.resolve("dap-was-sample/build.gradle"));
assertTrue(buildGradle.contains("id 'org.springframework.boot'"));
assertTrue(buildGradle.contains("Spring Boot 3.5.11"));
assertTrue(buildGradle.contains("implementation project(':dap-was-lib')"));
assertFalse(buildGradle.contains("compileOnly 'org.projectlombok:lombok"));
}
}