안전하게 다시 생성하기
ElastiCORE 에서는 다시 생성하는 것이 평소에 바꾸는 방법이지, 손댄 코드를 위험하게 하는 일이 아닙니다: 모델의 몫과 개발자의 몫이 다른 파일이고, 손으로 고친 파일은 내용 해시로 알아봅니다.
순서
src/main/resources/blueprint/<도메인>/의 YAML 을 고칩니다../gradlew compileJava(먼저 생성함) - 생성만 하려면./gradlew elcore3.- 출력을 끝까지 읽습니다:
[elcore3] DSL validation warnings:아래의 줄을 하나씩 YAML 에서 고칩니다. - 생성이 성공해도 컴파일까지 합니다 - 경고가 있어도 생성은 성공하고, 그 코드는 컴파일되지 않을 수 있습니다.
- 생성된 파일의 컴파일 오류는 그 파일이 아니라 YAML 에서 고칩니다.
상태가 뜻하는 것
=== elcore3: 20 written / 0 unchanged / 2 skipped / 0 failed ===
| 상태 | 뜻 |
|---|---|
WROTE, UNCHANGED | 지금 DSL 대로 생성됨 |
REGENERATED(owned, never edited) | 아직 고치지 않은 내 파일을 최신으로 |
SKIP(user-owned) | 내 것, 그대로 둠 |
SKIP(user-modified; -Pforce to overwrite) | 손으로 고친 생성 파일 - 더는 DSL 을 따르지 않음 |
SKIP(no ElastiCORE header - yours) | ElastiCORE 가 쓰지 않은 파일이 생성 파일 자리에 있음 |
SKIP(dontMake) | 이 모델에는 필요 없음 (예: 멤버의 리포지터리) |
REMOVED(the DSL no longer produces it) | 모델이 더는 만들지 않는, 아무도 고치지 않은 생성 파일을 지움 |
ERROR ... | 그 파일 생성 실패 |
누가 고친 생성 파일
고친 내용을 DSL 이나 내 파일로 옮긴 뒤, 그 파일을 지우고 다시 생성해 되돌립니다. -Pforce 는 손댄 생성 파일을 한꺼번에
덮어씁니다 - 그 수정을 한 사람이 정할 일이지 습관처럼 쓰는 옵션이 아닙니다. 에이전트 키트는 허락
없이는 -Pforce 를 거절합니다.
생성 파일에 꼭 둬야 하는 코드
클래스를 닫는 괄호 바로 앞에 보존 블록 하나. 생성기가 다시 생성할 때마다 그 코드를 되돌려 놓습니다:
// !-----------------------------------------------------------
@Query("SELECT e FROM Entity e WHERE e.name = :name")
List<Entity> findByName(@Param("name") String name);
// ------------------------------------------------------------!
지워지는 파일
모든 도메인을 생성한 실행의 끝에서, 생성한 디렉터리에 있지만 이번 실행이 만들지 않은 파일 중 첫 줄이 3.0 해시 줄이고,
넘겨준 파일이 아니고, 아무도 고치지 않은 것을 지웁니다. 고친 파일은 경고와 함께 남깁니다. -Pdomain=... 실행, 실패한
산출물이 있는 실행, 모델 검사가 실패한 실행은 아무것도 지우지 않습니다.
바꾼 것이 보이지 않을 때
- 내 파일이 모델을 따르지 않는다 - 한 번 고치면 내 것입니다. 쓴 내용을 옮겨 두고 지운 뒤 빌드해서 지금 생성되는 모양을 보고, 코드를 다시 옮깁니다.
- TypeScript 클라이언트가 예전 것이다 -
elcore3ts는 별도 태스크입니다.typescriptClient = true를 적습니다. - 런타임이나 생성기가 예전 버전이다 - 둘을 같은 버전으로 올립니다. 로컬에서 빌드한 ElastiCORE 면
publishToMavenLocal, 프로젝트에서는--refresh-dependencies. - YAML 파일 하나가 빠졌다 - 출력에서
* LOAD ERROR:를 찾습니다. 흔한 원인은--설명 안의:입니다.
같은 DSL, 같은 코드
같은 DSL 로 두 번 생성하면 130개 파일 중 달라지는 파일이 없고(각 파일 첫 줄의 해시·시각 제외), 검색 필드 하나를 더하면
DSL 1줄에 생성 코드는 9개 파일에서 39줄이 바뀝니다(저장소 docs/benchmarks 의 변경 증폭 벤치마크).