egovframe-scaffold-mcp 0.25.2 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -7
- package/catalog/template-mapping.json +43 -0
- package/catalog/templates.json +486 -0
- package/dist/ai.js +360 -0
- package/dist/catalog.js +109 -0
- package/dist/ci-config.js +61 -0
- package/dist/components.js +501 -0
- package/dist/diagnose.js +154 -0
- package/dist/explain.js +30 -0
- package/dist/guide.js +80 -0
- package/dist/index.js +45 -2599
- package/dist/manifest.js +16 -0
- package/dist/project.js +257 -0
- package/dist/recipes.js +97 -0
- package/dist/server.js +776 -0
- package/dist/shared.js +26 -0
- package/dist/template-catalog.js +130 -0
- package/dist/upgrade.js +165 -0
- package/dist/validate.js +88 -0
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -11,18 +11,20 @@
|
|
|
11
11
|
Claude, VS Code(Copilot), Cursor 등 MCP를 지원하는 AI 도구에서 **대화 중 즉시** 표준프레임워크
|
|
12
12
|
프로젝트를 만들고 공통컴포넌트·AI 계층을 조립할 수 있습니다. 기존 프로젝트 진단, 리포트, 안전한 upstream 재동기화도 지원합니다.
|
|
13
13
|
|
|
14
|
-
현재 v0.
|
|
14
|
+
현재 v0.26.0은 **도구 22종, 공식 템플릿 10종, 공통컴포넌트 카탈로그 190항목(리프 176종+그룹 14종)**을 제공합니다.
|
|
15
15
|
|
|
16
16
|
## 진행 현황 (2026-09-13)
|
|
17
17
|
|
|
18
|
-
- **소스 기준**: v0.
|
|
18
|
+
- **소스 기준**: v0.26.0(`package.json`), 도구 22종·공식 템플릿 10종·카탈로그 190항목.
|
|
19
19
|
- **안전성 기준선 완료**: [PR #7](https://github.com/EricSeokgon/egovframe-scaffold-mcp/pull/7)~[#16](https://github.com/EricSeokgon/egovframe-scaffold-mcp/pull/16)을 반영해 provenance·strict assertion·safe remove와 프로젝트 생성/레시피/직접 조립/AI 조립/업그레이드 transaction을 갖췄습니다.
|
|
20
20
|
- **v0.22.0 추가**: `EGOVFRAME_ALLOWED_ROOTS`를 19개 도구 진입점에 적용해 `..`·symlink/junction 이탈을 차단하고, 실패 시 rollback 결과를 구조화해 반환합니다. [PR #16](https://github.com/EricSeokgon/egovframe-scaffold-mcp/pull/16)은 7파일(+340/−31), 로컬 16종 스위트 전체 통과 후 병합됐습니다.
|
|
21
21
|
- **v0.23.0 추가**: `build_egovframe_project` — 생성한 프로젝트를 실제로 빌드(maven/gradle·mvnw/gradlew 자동 감지)하고 컴파일·테스트 오류를 파일/라인 단위로 구조화해 생성→검증 루프를 완성합니다. 타임아웃·로그 상한·허용 root·dryRun 포함. [PR #18](https://github.com/EricSeokgon/egovframe-scaffold-mcp/pull/18)은 4파일(+458/−3), 오프라인 40단언과 실제 spawn 경로를 검증했습니다.
|
|
22
22
|
- **v0.24.0 추가**: 공식 템플릿 커버리지 7 → 10종(`msa-common-components`·`mobile-device-api`·`ai-rag`, 모두 멀티 프로젝트). [PR #19](https://github.com/EricSeokgon/egovframe-scaffold-mcp/pull/19).
|
|
23
23
|
- **v0.25.0 추가**: `test_egovframe_project` — 테스트를 실행하고 빌드도구가 남기는 JUnit XML 리포트(surefire·gradle)를 읽어 스위트·케이스 단위로 결과를 구조화합니다. 실패 케이스의 메시지·예외 타입·테스트 파일/라인, `testFilter`(클래스/메서드 패턴), 이전 실행 리포트 제외, 종료 코드가 0이어도 리포트에 실패가 있으면 실패로 판정. 오프라인 54단언(`npm run test:test`).
|
|
24
24
|
- **v0.25.2 추가**: 보안·안정성 보강 — `generate_egovframe_ci`의 `jdk` 입력 검증(생성 YAML 주입 차단), 빌드·테스트 타임아웃 시 프로세스 트리 종료(래퍼가 띄운 JVM 때문에 타임아웃이 걸려도 호출이 끝나지 않던 문제 해결), MCP handshake 서버 버전을 `package.json`과 일치, 의존성 갱신으로 `npm audit` 0건.
|
|
25
|
-
-
|
|
25
|
+
- **v0.25.3 추가**: Linux·macOS에서 `npx egovframe-scaffold-mcp`(bin symlink 경유) 실행 시 서버가 기동하지 않고 종료되던 문제 수정, CI를 ubuntu·windows × Node 18·20·22 매트릭스로 확장.
|
|
26
|
+
- **v0.26.0 추가**: `sync_egovframe_templates` + `catalog/templates.json` — 그동안 Initializr(프로젝트 22종 zip 카탈로그)·MCP(`TEMPLATES` 10종 저장소 조달)·Development(`wizards.xml` 설정 마법사)에 흩어져 있던 "어떤 공식 프로젝트가 있는가"를 하나의 스키마로 합쳤습니다. 매핑은 `catalog/template-mapping.json` 에서 큐레이션하고(자동 추론 없음), upstream 과의 추가·삭제·변경과 MCP 커버리지 격차(현재 22종 중 9종 대응)를 도구로 조회합니다. 오프라인 148단언(`npm run test:template-catalog`).
|
|
27
|
+
- **배포 상태**: npm 최신 배포 버전은 상단 npm 배지와 [npm 패키지 페이지](https://www.npmjs.com/package/egovframe-scaffold-mcp)를 단일 출처로 확인합니다. 이 문서의 버전 표기는 저장소 소스(`package.json`) 기준이며, git 태그 `vX.Y.Z`가 해당 배포본의 커밋을 가리킵니다.
|
|
26
28
|
|
|
27
29
|
## 제공 도구
|
|
28
30
|
|
|
@@ -49,6 +51,7 @@ Claude, VS Code(Copilot), Cursor 등 MCP를 지원하는 AI 도구에서 **대
|
|
|
49
51
|
| `build_egovframe_project` | 생성한 프로젝트를 실제로 빌드(compile·test·package) — maven/gradle·mvnw/gradlew 자동 감지, 타임아웃·로그 상한, 컴파일 오류 파일/라인 구조화, dryRun |
|
|
50
52
|
| `test_egovframe_project` | 테스트 실행 + JUnit XML 리포트(surefire·gradle) 구조화 — 스위트별 통과/실패/오류/건너뜀, 실패 케이스 메시지·예외 타입·테스트 파일/라인, `testFilter`, 이전 실행 리포트 제외, dryRun |
|
|
51
53
|
| `generate_egovframe_crud` | 공식 Development CRUD wizard 입력 체계 기반 코드 생성 — VO·Mapper(XML)·Service·Controller·JSP(선택)·JUnit 5(선택), Classic/Boot 분기, 전체 충돌 사전 검사 |
|
|
54
|
+
| `sync_egovframe_templates` | 공식 프로젝트 템플릿 통합 카탈로그(Initializr·MCP·Development) upstream 대조 — 추가/삭제/변경 항목과 MCP 커버리지 격차 보고, 네트워크 필요 |
|
|
52
55
|
|
|
53
56
|
### create_egovframe_project 파라미터
|
|
54
57
|
|
|
@@ -187,10 +190,12 @@ Claude Desktop / Claude Code 설정 예 (`mcpServers`):
|
|
|
187
190
|
- 함수 레벨: 실제 템플릿(약 296파일) 생성, pom 좌표·DbType 적용, 중복 생성 거부, `dryRun` 미리보기(무기록) 확인 (`npm run smoke`)
|
|
188
191
|
- Maven 좌표 레벨: 프로젝트 직접 groupId/artifactId/name만 변경하고 parent·dependency artifactId 보존 (`npm run test:pom`, 네트워크 불필요)
|
|
189
192
|
- 카탈로그 레벨: schema v2, 고정 source/archive 지문, 자산 메타데이터, 무결성·위상 정렬·미리보기 검증 (`npm run test:catalog`, `npm run test:catalog-sync`, 네트워크 불필요)
|
|
193
|
+
- 템플릿 카탈로그 레벨: `catalog/templates.json` 스키마·커버리지 계산·큐레이션 매핑 정합·변환기·upstream 차이 계산(추가/삭제/필드 변경) 검증 (`npm run test:template-catalog`, 148단언, 네트워크 불필요)
|
|
190
194
|
- 동기화 레벨: 공식 v5.0.6 태그→commit, SHA-256·크기·파일 수, `sec.security`, 미매핑 경로 0건 검증 (`npm run test:catalog-sync-live`, 네트워크 필요)
|
|
191
195
|
- 조립 레벨: 실제 공통컴포넌트 저장소로 bbs+login+sec.security(+cmm) 843파일 조립, message·IDGN·웹 자산·공용 fragment·Maven 좌표·선별 DB 스크립트·충돌 전체 거부·파일/SQL/매니페스트 fault-injection rollback·상위 symlink 경계 검증 (`npm run test:components`)
|
|
192
196
|
- 수명주기 레벨: 설치 매니페스트 기록, 중복 설치 거부, 의존 컴포넌트 제거 보호, 제거·검증 동작 (`npm run test:components`)
|
|
193
|
-
- 프로토콜 레벨: MCP initialize / tools/list
|
|
197
|
+
- 프로토콜 레벨: 빌드된 서버를 실제 프로세스로 띄워 MCP initialize / tools/list 핸드셰이크, `serverInfo.version`↔`package.json` 일치, 핵심 도구 노출, `jdk` 패턴 제약 노출 확인 (`npm run test:handshake`, 네트워크 불필요)
|
|
198
|
+
- 플랫폼 레벨: CI가 릴리스 게이트를 ubuntu·windows × Node 18·20·22 매트릭스로 실행하고, 공식 저장소를 내려받는 통합 테스트는 ubuntu/Node 20에서 실행합니다. 타임아웃 시 프로세스 트리 종료는 POSIX·Windows 모두 실제 프로세스로 검증합니다 (`npm run test:build`).
|
|
194
199
|
- 레시피 레벨: `catalog/recipes.json`의 컴포넌트 id·의존성·템플릿 제공 컴포넌트 정합 검증 (`npm run test:recipes`, 네트워크 불필요). 공식 `simple-backend`의 기존 `cmm`을 보존하고 board-login의 bbs 88파일·login 41파일·SQL 4건(총 133파일)을 조립한 뒤 검증하며, 컴포넌트 이후 fault injection의 전체 staging rollback도 확인 (`npm run test:recipe-transaction`)
|
|
195
200
|
- 진단 레벨: 픽스처(pom·DbType·컴포넌트 패키지)로 `diagnose_egovframe_project`의 빌드·버전·DbType·컴포넌트 지문·의존성 검출 검증 (`npm run test:diagnose`, 네트워크 불필요)
|
|
196
201
|
- 문서 검색 레벨: `search_egovframe_docs`의 키워드 매칭·점수 정렬·컴포넌트 매핑·빈질의/미존재어 처리 검증 (`npm run test:docs`, 네트워크 불필요)
|
|
@@ -212,7 +217,7 @@ Claude Desktop / Claude Code 설정 예 (`mcpServers`):
|
|
|
212
217
|
|
|
213
218
|
## 로드맵
|
|
214
219
|
|
|
215
|
-
v0.
|
|
220
|
+
v0.26.0까지 프로젝트·CRUD 생성, 검증된 공통컴포넌트 실행 자산 조립, 안전성 기반(테스트 판정 강제·사용자 파일 보호·전 도구 트랜잭션·허용 root·구조화 rollback 보고), 생성→검증 루프(실제 빌드·오류 구조화·테스트 리포트 구조화), 그리고 공식 템플릿 카탈로그 단일화를 완료했습니다.
|
|
216
221
|
|
|
217
222
|
| 버전 | 핵심 기능 | 목표 |
|
|
218
223
|
|---|---|---|
|
|
@@ -222,7 +227,7 @@ v0.25.0까지 프로젝트·CRUD 생성, 검증된 공통컴포넌트 실행 자
|
|
|
222
227
|
| **v0.23 완료** | `build_egovframe_project` | Maven/Gradle·래퍼(mvnw/gradlew) 자동 감지, 타임아웃·로그 상한, 파일/라인 단위 오류 구조화로 생성→검증 에이전트 루프 완성([PR #18](https://github.com/EricSeokgon/egovframe-scaffold-mcp/pull/18)). `test_egovframe_project`는 v0.25에서 완료 |
|
|
223
228
|
| **v0.24 완료** | 공식 템플릿 커버리지 확대 (7 → **10종**) | Initializr 카탈로그(22항목) 대조로 미커버 공식 자산을 식별해 `msa-common-components`(KRDS)·`mobile-device-api`·`ai-rag` 추가. 모두 멀티 프로젝트로 표시해 좌표/DB 자동 재작성을 건너뛰고 하위 모듈 참조를 보호하며, 실제 아카이브 다운로드 통합 테스트로 검증 |
|
|
224
229
|
| **v0.25 완료** | `test_egovframe_project` | 테스트 실행 후 JUnit XML 리포트(surefire `target/surefire-reports`, gradle `build/test-results/test`)를 읽어 스위트·케이스 단위 집계, 실패 메시지·예외 타입·테스트 파일/라인, `testFilter`, 오래된 리포트 제외, exit 0이어도 리포트 실패면 실패 판정 |
|
|
225
|
-
| **v0.26
|
|
230
|
+
| **v0.26 완료** | IDE·Initializr·MCP 공통 카탈로그 | Initializr `templates-projects.json`(22종), MCP `TEMPLATES`(10종), Development `wizards.xml`(8카테고리)을 `schemaVersion: 1` 단일 스키마 `catalog/templates.json` 으로 통합. 변환기(`fromInitializr`·`fromMcpTemplates`)와 큐레이션 매핑(`catalog/template-mapping.json`), upstream 대조 도구 `sync_egovframe_templates` 로 커버리지 격차를 수작업 비교 없이 확인 |
|
|
226
231
|
| **v0.27 후보** | `migrate_egovframe_namespace` | 3.x→4.x import·XML bean·빌드 좌표 전환. dryRun·백업·원자적 거부와 자동 변환 불가 API 보고 |
|
|
227
232
|
| **v0.28 후보** | `check_egovframe_dependencies` + `security_patch_advisor` | 폐쇄망 최소 버전 규칙과 선택적 CVE 조회, CSRF·보안 설정·공식 패치 기준 점검 |
|
|
228
233
|
| **v0.29+ 후보** | 접근성·배포·AI 컨텍스트 | 영문 응답/README, Homebrew·MCP Registry, `generate_agents_md`, 공식 템플릿 커버리지 확대 |
|
|
@@ -235,10 +240,16 @@ v0.25.0까지 프로젝트·CRUD 생성, 검증된 공통컴포넌트 실행 자
|
|
|
235
240
|
|
|
236
241
|
상세 기획과 조사 근거는 [egovframe-contribution-notes의 v0.20+ 로드맵](https://github.com/EricSeokgon/egovframe-contribution-notes/blob/main/scaffold-mcp_v020%ED%94%8C%EB%9F%AC%EC%8A%A4_%EB%A1%9C%EB%93%9C%EB%A7%B5.md)에서 관리합니다.
|
|
237
242
|
|
|
238
|
-
개발 기반 개선도 병행합니다: GitHub Actions와 `prepublishOnly` 전체 테스트 일치, lockfile 기반 재현 설치, 단일 `src/index.ts` 모듈
|
|
243
|
+
개발 기반 개선도 병행합니다: GitHub Actions와 `prepublishOnly` 전체 테스트 일치, lockfile 기반 재현 설치, Windows·한글 경로·대용량 zip 검증 강화. 단일 파일이던 `src/index.ts`(약 3,200줄)는 도메인별 모듈 14개로 분리했으며(공개 export·MCP 프로토콜 표면 불변), `index.ts`는 진입점과 공개 API 재수출만 담당합니다.
|
|
239
244
|
|
|
240
245
|
## 변경 이력
|
|
241
246
|
|
|
247
|
+
- **0.26.0** — 공식 템플릿 카탈로그 단일화: `sync_egovframe_templates` 추가(도구 21 → 22). 그동안 같은 사실이 세 곳에 따로 적혀 있었습니다 — Initializr 는 `templates/templates-projects.json` 에 프로젝트 22종을 zip·pom 스냅샷으로, MCP 는 `TEMPLATES`(현 `src/project.ts`)에 10종을 공식 저장소 조달 방식으로, Development 는 `eGovFrameTemplates/wizards.xml` 에 설정 스니펫 마법사 8카테고리를 담고 있었고, v0.24.0 의 커버리지 확대도 이 둘을 **사람이 눈으로 대조**해 진행했습니다. 이번에 `schemaVersion: 1` 의 `catalog/templates.json` 하나로 합쳐 프로젝트마다 Initializr 쪽 zip·pom 과 MCP 쪽 저장소·브랜치·멀티프로젝트 여부를 나란히 두고, 커버리지(22종 중 대응 9종·미커버 13종·MCP 단독 2종)를 계산된 값으로 기록합니다. 매핑은 `catalog/template-mapping.json` 에서 큐레이션하며 자동 추론하지 않습니다 — 예컨대 Initializr 의 `egov-web`(빈 웹 골격)과 MCP 의 `web-sample`(게시판 샘플)은 이름이 비슷해도 다른 산출물이라 대응시키지 않고 근거를 note 로 남겼습니다. 생성기 `scripts/generate-template-catalog.mjs` 는 매핑에 없는 upstream 항목을 만나면 실패해 조용한 누락을 막고, `sync_egovframe_templates` 는 upstream 을 내려받아 추가·삭제·변경(필드 단위)과 sha256 을 대조해 보고하되 파일을 고쳐 쓰지 않습니다. `list_egovframe_templates` 응답에도 커버리지 요약이 붙습니다(카탈로그가 없으면 기존 동작 유지). 오프라인 148단언(`npm run test:template-catalog`), 기존 21개 도구 하위 호환. 생성기는 Windows 에서도 동작하도록 `dist/index.js` 로드와 직접 실행 판정을 file URL·realpath 기준으로 처리합니다.
|
|
248
|
+
- **0.25.3** — 기동 버그 수정 + CI 확장(도구 인터페이스 하위 호환).
|
|
249
|
+
- **npx 기동 실패 수정(Linux·macOS)**: 진입점 판정이 `process.argv[1]`의 파일명 끝을 `import.meta.url`과 비교하는 방식이어서, npm이 POSIX에서 bin을 symlink(`node_modules/.bin/egovframe-scaffold-mcp → dist/index.js`)로 설치하면 진입점이 아니라고 판단해 서버를 띄우지 않고 오류 없이 종료했습니다. README가 안내하는 `npx -y egovframe-scaffold-mcp` 설정이 Linux·macOS에서 동작하지 않던 원인입니다(Windows는 `.cmd` shim이 `dist/index.js`를 직접 실행해 영향 없음, `node dist/index.js` 직접 실행도 영향 없음). 양쪽 경로를 realpath로 풀어 비교하도록 바꾸고, symlink 경유 기동을 회귀 테스트로 고정했습니다(`npm run test:handshake`).
|
|
250
|
+
- **CI**: 릴리스 게이트를 ubuntu·windows × Node 18·20·22 매트릭스로 실행하고, 공식 저장소를 내려받는 통합 테스트는 별도 job(ubuntu/Node 20)으로 분리했습니다. bash 파이프라인이던 핸드셰이크 확인을 플랫폼 중립 테스트(`test:handshake`)로 대체해 `prepublishOnly`에 포함했고, 런타임 의존성 `npm audit`(high 이상) 단계를 추가했습니다.
|
|
251
|
+
- **테스트**: 타임아웃 시 프로세스 트리 종료 회귀 테스트를 node 손자 프로세스 기반으로 바꿔 Windows(`taskkill /T /F` 경로)에서도 실행합니다.
|
|
252
|
+
- **문서**: 게시 시점에 따라 틀어지던 "배포 상태" 문구를 npm 배지 단일 출처 방식으로 정리했습니다.
|
|
242
253
|
- **0.25.2** — 보안·안정성 보강(도구 인터페이스 하위 호환).
|
|
243
254
|
- `generate_egovframe_ci`: `jdk` 값이 생성 워크플로 YAML에 검증 없이 삽입되어 따옴표·줄바꿈으로 임의 step을 끼워 넣을 수 있던 문제를 수정했습니다. 숫자·점 형식(`17`, `21`, `1.8`, `17.0.9`)만 허용하며 도구 스키마와 함수 양쪽에서 거부합니다. 위반 시 파일을 만들지 않습니다.
|
|
244
255
|
- `build_egovframe_project`·`test_egovframe_project`: 타임아웃 시 직접 자식 프로세스만 종료해, `mvnw`/`gradlew`가 띄운 JVM이 출력 파이프를 붙잡은 채 살아남으면 타임아웃이 지나도 호출이 끝나지 않던 문제를 수정했습니다(재현: `timeoutMs` 1초 설정에 30초 후 반환). POSIX는 프로세스 그룹 단위 SIGKILL, Windows는 `taskkill /T /F`로 트리를 종료하고, 그래도 파이프가 닫히지 않으면 2초 유예 후 결과를 반환합니다. 실제 프로세스를 띄우는 회귀 테스트를 추가했습니다(`npm run test:build`).
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"comment": "Initializr 프로젝트(projectName)와 MCP 템플릿(TEMPLATES 키)의 큐레이션 매핑. 같은 공식 산출물을 가리킬 때만 mcpTemplate 을 채우고, 성격이 다르면 null 로 두고 note 에 근거를 남긴다. scripts/generate-template-catalog.mjs 가 읽는다.",
|
|
3
|
+
"mappings": {
|
|
4
|
+
"egov-template-simple": { "mcpTemplate": "simple-homepage" },
|
|
5
|
+
"egov-template-portal": { "mcpTemplate": "portal-site" },
|
|
6
|
+
"egov-template-enterprise": { "mcpTemplate": "enterprise-business" },
|
|
7
|
+
"egov-boot-simple-backend": { "mcpTemplate": "simple-backend" },
|
|
8
|
+
"egov-boot-simple-frontend": { "mcpTemplate": "simple-react" },
|
|
9
|
+
"egov-msa-boot-common-components": { "mcpTemplate": "msa-common-components" },
|
|
10
|
+
"egov-mobile-deviceapi": { "mcpTemplate": "mobile-device-api" },
|
|
11
|
+
"egov-ai-rag-springai": {
|
|
12
|
+
"mcpTemplate": "ai-rag",
|
|
13
|
+
"note": "MCP 의 ai-rag 는 spring-ai·langchain4j 두 모듈을 함께 담은 멀티 프로젝트라 Initializr 의 두 항목이 같은 템플릿에 대응한다"
|
|
14
|
+
},
|
|
15
|
+
"egov-ai-rag-langchain4j": {
|
|
16
|
+
"mcpTemplate": "ai-rag",
|
|
17
|
+
"note": "MCP 의 ai-rag 는 spring-ai·langchain4j 두 모듈을 함께 담은 멀티 프로젝트라 Initializr 의 두 항목이 같은 템플릿에 대응한다"
|
|
18
|
+
},
|
|
19
|
+
"egov-web": {
|
|
20
|
+
"mcpTemplate": null,
|
|
21
|
+
"note": "빈 웹 프로젝트 골격이다. MCP 의 web-sample(egovframe-web-sample)은 게시판 샘플이라 같은 산출물로 보지 않는다"
|
|
22
|
+
},
|
|
23
|
+
"egov-boot-web": { "mcpTemplate": null },
|
|
24
|
+
"egov-template-common-components": {
|
|
25
|
+
"mcpTemplate": null,
|
|
26
|
+
"note": "공통컴포넌트 올인원 프로젝트. MCP 는 템플릿 통째로 받는 대신 list_egovframe_components / add_egovframe_components 로 선택 조립한다"
|
|
27
|
+
},
|
|
28
|
+
"egov-msa-portal-backend": { "mcpTemplate": null },
|
|
29
|
+
"egov-msa-portal-frontend": { "mcpTemplate": null },
|
|
30
|
+
"egov-mobile-web": { "mcpTemplate": null },
|
|
31
|
+
"egov-mobile-common-components": { "mcpTemplate": null },
|
|
32
|
+
"egov-boot-batch-scheduler-file": { "mcpTemplate": null },
|
|
33
|
+
"egov-boot-batch-commandline-file": { "mcpTemplate": null },
|
|
34
|
+
"egov-boot-batch-web-file": { "mcpTemplate": null },
|
|
35
|
+
"egov-boot-batch-scheduler-db": { "mcpTemplate": null },
|
|
36
|
+
"egov-boot-batch-commandline-db": { "mcpTemplate": null },
|
|
37
|
+
"egov-boot-batch-web-db": { "mcpTemplate": null }
|
|
38
|
+
},
|
|
39
|
+
"mcpOnlyNotes": {
|
|
40
|
+
"web-sample": "Initializr 의 egov-web 은 빈 골격이라 대응 항목으로 보지 않는다",
|
|
41
|
+
"msa-edu": "Initializr 카탈로그에 없는 MCP 단독 템플릿(클라우드 네이티브 교육용 멀티 프로젝트)"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"generatedBy": "scripts/generate-template-catalog.mjs",
|
|
4
|
+
"sources": {
|
|
5
|
+
"initializr": {
|
|
6
|
+
"repository": "eGovFramework/egovframe-vscode-initializr",
|
|
7
|
+
"branch": "main",
|
|
8
|
+
"path": "templates/templates-projects.json",
|
|
9
|
+
"surveyedAt": "2026-09-20",
|
|
10
|
+
"entries": 22,
|
|
11
|
+
"sha256": "50394b91144e8d20f0f5d3fb138ab48cad3c3a28818f2906a2f38b07bfb9edef"
|
|
12
|
+
},
|
|
13
|
+
"development": {
|
|
14
|
+
"repository": "eGovFramework/egovframe-development",
|
|
15
|
+
"branch": "main",
|
|
16
|
+
"path": "egovframework.dev.imp.templates/src/main/resources/eGovFrameTemplates/wizards.xml",
|
|
17
|
+
"surveyedAt": "2026-09-20",
|
|
18
|
+
"categories": 8,
|
|
19
|
+
"wizards": 22,
|
|
20
|
+
"sha256": "077d3dc0a332a9ef60f06869a3ec4c9c86f517a74168850f715dcc461bea7ff6"
|
|
21
|
+
},
|
|
22
|
+
"mcp": {
|
|
23
|
+
"source": "src/project.ts TEMPLATES",
|
|
24
|
+
"templates": 10
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"coverage": {
|
|
28
|
+
"initializrProjects": 22,
|
|
29
|
+
"coveredByMcp": 9,
|
|
30
|
+
"uncovered": 13,
|
|
31
|
+
"mcpTemplates": 10,
|
|
32
|
+
"mcpOnly": 2
|
|
33
|
+
},
|
|
34
|
+
"projects": [
|
|
35
|
+
{
|
|
36
|
+
"id": "egov-web",
|
|
37
|
+
"displayName": "Web Project",
|
|
38
|
+
"category": "Web",
|
|
39
|
+
"description": "Basic eGovFrame web application project",
|
|
40
|
+
"initializr": {
|
|
41
|
+
"fileName": "egovframe-web.zip",
|
|
42
|
+
"pomFile": "egovframe-web-pom.xml"
|
|
43
|
+
},
|
|
44
|
+
"mcpTemplate": null,
|
|
45
|
+
"mcp": null,
|
|
46
|
+
"note": "빈 웹 프로젝트 골격이다. MCP 의 web-sample(egovframe-web-sample)은 게시판 샘플이라 같은 산출물로 보지 않는다"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "egov-template-simple",
|
|
50
|
+
"displayName": "Template > Simple Homepage",
|
|
51
|
+
"category": "Template",
|
|
52
|
+
"description": "Simple homepage template with basic functionalities",
|
|
53
|
+
"initializr": {
|
|
54
|
+
"fileName": "egovframe-template-simple.zip",
|
|
55
|
+
"pomFile": "egovframe-template-simple-pom.xml"
|
|
56
|
+
},
|
|
57
|
+
"mcpTemplate": "simple-homepage",
|
|
58
|
+
"mcp": {
|
|
59
|
+
"repository": "eGovFramework/egovframe-simple-homepage-template",
|
|
60
|
+
"branch": "main",
|
|
61
|
+
"multiProject": false
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "egov-template-portal",
|
|
66
|
+
"displayName": "Template > Portal Site",
|
|
67
|
+
"category": "Template",
|
|
68
|
+
"description": "Portal site template for enterprise applications",
|
|
69
|
+
"initializr": {
|
|
70
|
+
"fileName": "egovframe-template-portal.zip",
|
|
71
|
+
"pomFile": "egovframe-template-portal-pom.xml"
|
|
72
|
+
},
|
|
73
|
+
"mcpTemplate": "portal-site",
|
|
74
|
+
"mcp": {
|
|
75
|
+
"repository": "eGovFramework/egovframe-portal-site-template",
|
|
76
|
+
"branch": "main",
|
|
77
|
+
"multiProject": false
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "egov-template-enterprise",
|
|
82
|
+
"displayName": "Template > Enterprise Business",
|
|
83
|
+
"category": "Template",
|
|
84
|
+
"description": "Enterprise business application template",
|
|
85
|
+
"initializr": {
|
|
86
|
+
"fileName": "egovframe-template-enterprise.zip",
|
|
87
|
+
"pomFile": "egovframe-template-enterprise-pom.xml"
|
|
88
|
+
},
|
|
89
|
+
"mcpTemplate": "enterprise-business",
|
|
90
|
+
"mcp": {
|
|
91
|
+
"repository": "eGovFramework/egovframe-enterprise-business-template",
|
|
92
|
+
"branch": "main",
|
|
93
|
+
"multiProject": false
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "egov-template-common-components",
|
|
98
|
+
"displayName": "Template > Common Components",
|
|
99
|
+
"category": "Template",
|
|
100
|
+
"description": "Comprehensive common-components all-in-one project template",
|
|
101
|
+
"initializr": {
|
|
102
|
+
"fileName": "egovframe-template-common-components.zip",
|
|
103
|
+
"pomFile": "egovframe-template-common-components-pom.xml"
|
|
104
|
+
},
|
|
105
|
+
"mcpTemplate": null,
|
|
106
|
+
"mcp": null,
|
|
107
|
+
"note": "공통컴포넌트 올인원 프로젝트. MCP 는 템플릿 통째로 받는 대신 list_egovframe_components / add_egovframe_components 로 선택 조립한다"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "egov-boot-web",
|
|
111
|
+
"displayName": "Boot Web Project",
|
|
112
|
+
"category": "Boot",
|
|
113
|
+
"description": "Spring Boot based web project",
|
|
114
|
+
"initializr": {
|
|
115
|
+
"fileName": "egovframe-boot-web.zip",
|
|
116
|
+
"pomFile": "egovframe-boot-web-pom.xml"
|
|
117
|
+
},
|
|
118
|
+
"mcpTemplate": null,
|
|
119
|
+
"mcp": null
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "egov-boot-simple-backend",
|
|
123
|
+
"displayName": "Boot Template > Simple Homepage (Backend)",
|
|
124
|
+
"category": "Boot",
|
|
125
|
+
"description": "Spring Boot simple homepage backend",
|
|
126
|
+
"initializr": {
|
|
127
|
+
"fileName": "egovframe-boot-simple-backend.zip",
|
|
128
|
+
"pomFile": "egovframe-boot-simple-backend-pom.xml"
|
|
129
|
+
},
|
|
130
|
+
"mcpTemplate": "simple-backend",
|
|
131
|
+
"mcp": {
|
|
132
|
+
"repository": "eGovFramework/egovframe-template-simple-backend",
|
|
133
|
+
"branch": "main",
|
|
134
|
+
"multiProject": false
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "egov-boot-simple-frontend",
|
|
139
|
+
"displayName": "Boot Template > Simple Homepage (Frontend)",
|
|
140
|
+
"category": "Boot",
|
|
141
|
+
"description": "React-based frontend for simple homepage",
|
|
142
|
+
"initializr": {
|
|
143
|
+
"fileName": "egovframe-boot-simple-frontend.zip",
|
|
144
|
+
"pomFile": null
|
|
145
|
+
},
|
|
146
|
+
"mcpTemplate": "simple-react",
|
|
147
|
+
"mcp": {
|
|
148
|
+
"repository": "eGovFramework/egovframe-template-simple-react",
|
|
149
|
+
"branch": "main",
|
|
150
|
+
"multiProject": false
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"id": "egov-msa-boot-common-components",
|
|
155
|
+
"displayName": "MSA Boot Template > Common Components (KRDS)",
|
|
156
|
+
"category": "MSA",
|
|
157
|
+
"description": "MSA common components with KRDS integration",
|
|
158
|
+
"initializr": {
|
|
159
|
+
"fileName": "egovframe-msa-common-components.zip",
|
|
160
|
+
"pomFile": null
|
|
161
|
+
},
|
|
162
|
+
"mcpTemplate": "msa-common-components",
|
|
163
|
+
"mcp": {
|
|
164
|
+
"repository": "eGovFramework/egovframe-msa-common-components",
|
|
165
|
+
"branch": "main",
|
|
166
|
+
"multiProject": true
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": "egov-msa-portal-backend",
|
|
171
|
+
"displayName": "MSA Boot Template > Portal (Backend)",
|
|
172
|
+
"category": "MSA",
|
|
173
|
+
"description": "MSA portal backend services",
|
|
174
|
+
"initializr": {
|
|
175
|
+
"fileName": "egovframe-msa-portal-backend.zip",
|
|
176
|
+
"pomFile": null
|
|
177
|
+
},
|
|
178
|
+
"mcpTemplate": null,
|
|
179
|
+
"mcp": null
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"id": "egov-msa-portal-frontend",
|
|
183
|
+
"displayName": "MSA Boot Template > Portal (Frontend)",
|
|
184
|
+
"category": "MSA",
|
|
185
|
+
"description": "MSA portal frontend application",
|
|
186
|
+
"initializr": {
|
|
187
|
+
"fileName": "egovframe-msa-portal-frontend.zip",
|
|
188
|
+
"pomFile": null
|
|
189
|
+
},
|
|
190
|
+
"mcpTemplate": null,
|
|
191
|
+
"mcp": null
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"id": "egov-mobile-web",
|
|
195
|
+
"displayName": "Mobile Web Project",
|
|
196
|
+
"category": "Mobile",
|
|
197
|
+
"description": "Mobile web application project",
|
|
198
|
+
"initializr": {
|
|
199
|
+
"fileName": "egovframe-mobile-web.zip",
|
|
200
|
+
"pomFile": "egovframe-mobile-web-pom.xml"
|
|
201
|
+
},
|
|
202
|
+
"mcpTemplate": null,
|
|
203
|
+
"mcp": null
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "egov-mobile-common-components",
|
|
207
|
+
"displayName": "Mobile Common Components Project",
|
|
208
|
+
"category": "Mobile",
|
|
209
|
+
"description": "Mobile template common-components project with hybrid app support",
|
|
210
|
+
"initializr": {
|
|
211
|
+
"fileName": "egovframe-mobile-common-components.zip",
|
|
212
|
+
"pomFile": "egovframe-mobile-common-components-pom.xml"
|
|
213
|
+
},
|
|
214
|
+
"mcpTemplate": null,
|
|
215
|
+
"mcp": null
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"id": "egov-mobile-deviceapi",
|
|
219
|
+
"displayName": "DeviceAPI Web Project",
|
|
220
|
+
"category": "Mobile",
|
|
221
|
+
"description": "Device API integration web project",
|
|
222
|
+
"initializr": {
|
|
223
|
+
"fileName": "egovframe-mobile-deviceapi.zip",
|
|
224
|
+
"pomFile": "egovframe-mobile-deviceapi-pom.xml"
|
|
225
|
+
},
|
|
226
|
+
"mcpTemplate": "mobile-device-api",
|
|
227
|
+
"mcp": {
|
|
228
|
+
"repository": "eGovFramework/egovframe-mobile-device-api",
|
|
229
|
+
"branch": "main",
|
|
230
|
+
"multiProject": true
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"id": "egov-boot-batch-scheduler-file",
|
|
235
|
+
"displayName": "Boot Batch Template > Scheduler (File)",
|
|
236
|
+
"category": "Batch",
|
|
237
|
+
"description": "File-based batch scheduler project",
|
|
238
|
+
"initializr": {
|
|
239
|
+
"fileName": "egovframe-boot-batch-file-scheduler.zip",
|
|
240
|
+
"pomFile": "egovframe-boot-batch-file-scheduler-pom.xml"
|
|
241
|
+
},
|
|
242
|
+
"mcpTemplate": null,
|
|
243
|
+
"mcp": null
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"id": "egov-boot-batch-commandline-file",
|
|
247
|
+
"displayName": "Boot Batch Template > CommandLine (File)",
|
|
248
|
+
"category": "Batch",
|
|
249
|
+
"description": "File-based command line batch project",
|
|
250
|
+
"initializr": {
|
|
251
|
+
"fileName": "egovframe-boot-batch-file-commandline.zip",
|
|
252
|
+
"pomFile": "egovframe-boot-batch-file-commandline-pom.xml"
|
|
253
|
+
},
|
|
254
|
+
"mcpTemplate": null,
|
|
255
|
+
"mcp": null
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"id": "egov-boot-batch-web-file",
|
|
259
|
+
"displayName": "Boot Batch Template > Web (File)",
|
|
260
|
+
"category": "Batch",
|
|
261
|
+
"description": "File-based web batch project",
|
|
262
|
+
"initializr": {
|
|
263
|
+
"fileName": "egovframe-boot-batch-file-web.zip",
|
|
264
|
+
"pomFile": "egovframe-boot-batch-file-web-pom.xml"
|
|
265
|
+
},
|
|
266
|
+
"mcpTemplate": null,
|
|
267
|
+
"mcp": null
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"id": "egov-boot-batch-scheduler-db",
|
|
271
|
+
"displayName": "Boot Batch Template > Scheduler (DB)",
|
|
272
|
+
"category": "Batch",
|
|
273
|
+
"description": "Database-based batch scheduler project",
|
|
274
|
+
"initializr": {
|
|
275
|
+
"fileName": "egovframe-boot-batch-db-scheduler.zip",
|
|
276
|
+
"pomFile": "egovframe-boot-batch-db-scheduler-pom.xml"
|
|
277
|
+
},
|
|
278
|
+
"mcpTemplate": null,
|
|
279
|
+
"mcp": null
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"id": "egov-boot-batch-commandline-db",
|
|
283
|
+
"displayName": "Boot Batch Template > CommandLine (DB)",
|
|
284
|
+
"category": "Batch",
|
|
285
|
+
"description": "Database-based command line batch project",
|
|
286
|
+
"initializr": {
|
|
287
|
+
"fileName": "egovframe-boot-batch-db-commandline.zip",
|
|
288
|
+
"pomFile": "egovframe-boot-batch-db-commandline-pom.xml"
|
|
289
|
+
},
|
|
290
|
+
"mcpTemplate": null,
|
|
291
|
+
"mcp": null
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"id": "egov-boot-batch-web-db",
|
|
295
|
+
"displayName": "Boot Batch Template > Web (DB)",
|
|
296
|
+
"category": "Batch",
|
|
297
|
+
"description": "Database-based web batch project",
|
|
298
|
+
"initializr": {
|
|
299
|
+
"fileName": "egovframe-boot-batch-db-web.zip",
|
|
300
|
+
"pomFile": "egovframe-boot-batch-db-web-pom.xml"
|
|
301
|
+
},
|
|
302
|
+
"mcpTemplate": null,
|
|
303
|
+
"mcp": null
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"id": "egov-ai-rag-springai",
|
|
307
|
+
"displayName": "AI > RAG Project (Spring AI)",
|
|
308
|
+
"category": "AI",
|
|
309
|
+
"description": "RAG Project Using Spring AI and Redis Stack",
|
|
310
|
+
"initializr": {
|
|
311
|
+
"fileName": "egovframe-ai-rag-springai.zip",
|
|
312
|
+
"pomFile": "egovframe-ai-rag-springai-pom.xml"
|
|
313
|
+
},
|
|
314
|
+
"mcpTemplate": "ai-rag",
|
|
315
|
+
"mcp": {
|
|
316
|
+
"repository": "eGovFramework/egovframe-ai-rag",
|
|
317
|
+
"branch": "main",
|
|
318
|
+
"multiProject": true
|
|
319
|
+
},
|
|
320
|
+
"note": "MCP 의 ai-rag 는 spring-ai·langchain4j 두 모듈을 함께 담은 멀티 프로젝트라 Initializr 의 두 항목이 같은 템플릿에 대응한다"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"id": "egov-ai-rag-langchain4j",
|
|
324
|
+
"displayName": "AI > RAG Project (Langchain4j)",
|
|
325
|
+
"category": "AI",
|
|
326
|
+
"description": "RAG Project Using Langchain4j and PostgreSQL",
|
|
327
|
+
"initializr": {
|
|
328
|
+
"fileName": "egovframe-ai-rag-langchain4j.zip",
|
|
329
|
+
"pomFile": "egovframe-ai-rag-langchain4j-pom.xml"
|
|
330
|
+
},
|
|
331
|
+
"mcpTemplate": "ai-rag",
|
|
332
|
+
"mcp": {
|
|
333
|
+
"repository": "eGovFramework/egovframe-ai-rag",
|
|
334
|
+
"branch": "main",
|
|
335
|
+
"multiProject": true
|
|
336
|
+
},
|
|
337
|
+
"note": "MCP 의 ai-rag 는 spring-ai·langchain4j 두 모듈을 함께 담은 멀티 프로젝트라 Initializr 의 두 항목이 같은 템플릿에 대응한다"
|
|
338
|
+
}
|
|
339
|
+
],
|
|
340
|
+
"mcpOnly": [
|
|
341
|
+
{
|
|
342
|
+
"id": "web-sample",
|
|
343
|
+
"repository": "eGovFramework/egovframe-web-sample",
|
|
344
|
+
"branch": "main",
|
|
345
|
+
"multiProject": false,
|
|
346
|
+
"note": "Initializr 의 egov-web 은 빈 골격이라 대응 항목으로 보지 않는다"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"id": "msa-edu",
|
|
350
|
+
"repository": "eGovFramework/egovframe-msa-edu",
|
|
351
|
+
"branch": "main",
|
|
352
|
+
"multiProject": true,
|
|
353
|
+
"note": "Initializr 카탈로그에 없는 MCP 단독 템플릿(클라우드 네이티브 교육용 멀티 프로젝트)"
|
|
354
|
+
}
|
|
355
|
+
],
|
|
356
|
+
"configWizards": [
|
|
357
|
+
{
|
|
358
|
+
"name": "CRUD",
|
|
359
|
+
"wizards": [
|
|
360
|
+
{
|
|
361
|
+
"description": "CRUD Program",
|
|
362
|
+
"template": "crud/wizard.xml"
|
|
363
|
+
}
|
|
364
|
+
]
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"name": "Cache",
|
|
368
|
+
"wizards": [
|
|
369
|
+
{
|
|
370
|
+
"description": "New Cache",
|
|
371
|
+
"template": "cache/cache.xml"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"description": "New Ehcache Configuration",
|
|
375
|
+
"template": "cache/ehcacheConfigForSpring.xml"
|
|
376
|
+
}
|
|
377
|
+
]
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"name": "Datasource",
|
|
381
|
+
"wizards": [
|
|
382
|
+
{
|
|
383
|
+
"description": "New Datasource",
|
|
384
|
+
"template": "datasource/datasource.xml"
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"description": "New JNDI DataSource",
|
|
388
|
+
"template": "datasource/jndiDatasource.xml"
|
|
389
|
+
}
|
|
390
|
+
]
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"name": "Transaction",
|
|
394
|
+
"wizards": [
|
|
395
|
+
{
|
|
396
|
+
"description": "New Datasource Transaction",
|
|
397
|
+
"template": "transaction/transaction.xml"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"description": "New JPA Transaction",
|
|
401
|
+
"template": "transaction/jpa.xml"
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"description": "New JTA Transaction",
|
|
405
|
+
"template": "transaction/jta.xml"
|
|
406
|
+
}
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"name": "ID Generation",
|
|
411
|
+
"wizards": [
|
|
412
|
+
{
|
|
413
|
+
"description": "New Sequence ID Generation",
|
|
414
|
+
"template": "idGeneration/sequenceId.xml"
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"description": "New Table ID Generation",
|
|
418
|
+
"template": "idGeneration/tableId.xml"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"description": "New UUID Generation",
|
|
422
|
+
"template": "idGeneration/uuId.xml"
|
|
423
|
+
}
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"name": "Property",
|
|
428
|
+
"wizards": [
|
|
429
|
+
{
|
|
430
|
+
"description": "New Property",
|
|
431
|
+
"template": "property/property.xml"
|
|
432
|
+
}
|
|
433
|
+
]
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"name": "Scheduling",
|
|
437
|
+
"wizards": [
|
|
438
|
+
{
|
|
439
|
+
"description": "New Detail Bean Job",
|
|
440
|
+
"template": "scheduling/beanJob.xml"
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"description": "New Method Invoking Job",
|
|
444
|
+
"template": "scheduling/methodJob.xml"
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"description": "New Simple Trigger",
|
|
448
|
+
"template": "scheduling/simpleTrigger.xml"
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
"description": "New Cron Trigger",
|
|
452
|
+
"template": "scheduling/cronTrigger.xml"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"description": "New Scheduler",
|
|
456
|
+
"template": "scheduling/scheduler.xml"
|
|
457
|
+
}
|
|
458
|
+
]
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"name": "Logging",
|
|
462
|
+
"wizards": [
|
|
463
|
+
{
|
|
464
|
+
"description": "New Console Appender",
|
|
465
|
+
"template": "logging/console.xml"
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"description": "New File Appender",
|
|
469
|
+
"template": "logging/file.xml"
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"description": "New Rolling File Appender",
|
|
473
|
+
"template": "logging/rollingFile.xml"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"description": "New Time-Based Rolling File Appender",
|
|
477
|
+
"template": "logging/timeBasedRollingFile.xml"
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"description": "New JDBC Appender",
|
|
481
|
+
"template": "logging/jdbc.xml"
|
|
482
|
+
}
|
|
483
|
+
]
|
|
484
|
+
}
|
|
485
|
+
]
|
|
486
|
+
}
|