본문으로 건너뛰기
ElastiCORE 3.0 은 릴리스 후보(RC)입니다: Maven Central 의 3.0.261022-rc1. 2.2 라인 프로젝트는 2.2 문서를 보세요.
버전: 3.0

안전하게 다시 생성하기

ElastiCORE 에서는 다시 생성하는 것이 평소에 바꾸는 방법이지, 손댄 코드를 위험하게 하는 일이 아닙니다: 모델의 몫과 개발자의 몫이 다른 파일이고, 손으로 고친 파일은 내용 해시로 알아봅니다.

순서​

  1. src/main/resources/blueprint/<도메인>/ 의 YAML 을 고칩니다.
  2. ./gradlew compileJava (먼저 생성함) - 생성만 하려면 ./gradlew elcore3.
  3. 출력을 끝까지 읽습니다: [elcore3] DSL validation warnings: 아래의 줄을 하나씩 YAML 에서 고칩니다.
  4. 생성이 성공해도 컴파일까지 합니다 - 경고가 있어도 생성은 성공하고, 그 코드는 컴파일되지 않을 수 있습니다.
  5. 생성된 파일의 컴파일 오류는 그 파일이 아니라 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 의 변경 증폭 벤치마크).