파일 및 디렉토리 구성
스크럴을 구성하는 파일, 디렉토리에 대한 설명입니다.
project
│ .skrull/ << 'skrull 에 의해 생성된 파일을 추적하기 위한 디렉토리'
│
└───src/
│ │
│ └───main/
│ │───config/ << 'skrull 설정 디렉토리'
│ │
│ │ entity-config/ << '1️⃣ entity 별 설정 파일 디렉토리'
│ │ metadata.xml << '2️⃣ mvn verify -Pmetadata 에 의해 생성되는 파일'
│ │ skrull-config.xml << '3️⃣ skrull 설정 파일'
│ │
│ │───generated-java/ << '4️⃣ skrull 에 의해 생성된 java code 디렉토리'
│ │───generated-resources/ << '5️⃣ skrull 에 의해 생성된 resource code (mybatis mapper) 디렉토리'
│ │───java/ << '6️⃣ domain, dsl(mybatis), mapper java 파일을 생성합니다.'
│ │───resources/ << '7️⃣ mybatis sql mapper xml 을 생성합니다.'
│
└───target
│ │
│ │───skrull-maven-plugin/
│ │
│ │───collisions/ << '8️⃣ 충돌난 파일을 이곳에 생성'
│ │───com/mypackage/ << '9️⃣ 자동으로 install 하지 않는 파일은 이곳에 생성'
- skrull 에 의해
generated-java
,generated-resources
디렉토리에 생성된 파일은, 개발자가 수정하는 파일이 아닙니다.- 수정 하더라도, 다음 skrull 구동시 원복됩니다.
- skrull 에 의해
java
,resources
에 생성된 파일은, 개발자가 수정 및 로직 추가를 할 수 있습니다.
1. entity-config
location : src/main/config/entity-config/
관리주체 :개발자
코드 생성이 필요한 테이블들에 대한 정보를 담은 xml 을 이곳에 위치시킵니다.
자세한 설명은 entity-config 에서 확인합니다.
2. metadata.xml
location : src/main/config/metadata.xml
관리주체 :skrull
metadata 플러그인(dbmetadata-maven-plugin
)에 의해 생성되는 파일입니다.
데이터베이스에 대한 정보 (테이블, 컬럼…)를 담고 있으며, 이 파일은 플러그인에 의해 관리 되므로 사용자가 임의 수정을 하지 않도록 합니다.
만약 수정을 한다 해도, 플러그인을 다시 실행하면 덮어 쓰게 되므로 수정한 내용이 보존되지 않습니다.
3. skrull-config.xml
location : src/main/config/skrull-config.xml
관리주체 :개발자
자세한 설명은 skrull-config 에서 확인합니다.
4. generated-java
location : src/main/generated-java/
관리주체 :skrull
gen 플러그인(skrull-maven-plugin
)에 의해 생성되는 디렉토리입니다.
skrull 에 의해 생성된 java 파일이 이곳에 위치하게 됩니다.
현재는 model
, dsl
자바 파일이 이곳에 만들어집니다.
여기에 생성된 파일들은 플러그인에 의해 관리 되므로 사용자가 임의 수정을 하지 않도록 합니다.
만약 수정을 한다 해도, 플러그인을 다시 실행하면 덮어 쓰게 되므로 수정한 내용이 보존되지 않습니다.
5. generated-resources
location : src/main/generated-resources/
관리주체 :skrull
gen 플러그인(skrull-maven-plugin
)에 의해 생성되는 디렉토리입니다.
skrull 에 의해 생성된 resource(java 파일이 아닌) 파일이 이곳에 위치하게 됩니다.
현재는 mybatis mapper xml 파일이 이곳에 만들어집니다.
여기에 생성된 파일들은 플러그인에 의해 관리 되므로 사용자가 임의 수정을 하지 않도록 합니다.
만약 수정을 한다 해도, 플러그인을 다시 실행하면 덮어 쓰게 되므로 수정한 내용이 보존되지 않습니다.
6. java
location : src/main/java/
관리주체 :skrull
,개발자
maven 기본 directory structure 에서 java
소스 파일이 위치하는 곳입니다.
skrull gen
플러그인은 이곳에도 java 파일을 생성합니다.
(같은 디렉토리에 같은 이름의 파일이 존재 하지 않는 경우에만)
최초에는 skrull 이 파일을 생성하지만, 생성된 후에는 개발자
가 해당 파일을 마음대로 수정하며 개발을 할 수 있습니다.
생성하는 파일은 다음과 같습니다.
디렉토리 | 파일명 | 설명 |
---|---|---|
modules/{package}/domain/ | {entity}.java | java domain object (pojo) |
modules/{package}/domain/support/ | {entity}Dsl.java | MyBatis Dynamic SQL 지원을 위한, 테이블 컬럼 맵핑 정보를 담고 있는 java 파일 |
modules/{package}/repository/ | {entity}Repository.java | MyBatis sql mapper java 파일 |
비즈니스 로직을 담고 있는 service 자바 파일은 자동으로 이곳에 생성되지 않습니다.
TIP
일반적으로 domain, repository 는 database table 과 1:1 관계를 가지지만, service 는 1:1의 관계가 되지 않습니다.
이로 인해 skrull 에서는, 필요시에만 개발자가 기본 CRUD service code 를 가저가다 사용 할 수 있도록 /target/ 디렉토리에 별도로 생성합니다.
이와 비슷한 이유로 RestAPI(Resource) java 파일 또한 /target/ 디렉토리에 별도로 생성합니다.
7. resources
location : src/main/resources/
관리주체 :skrull
,개발자
maven 기본 directory structure 에서 resources
파일이 위치하는 곳입니다.
skrull gen
플러그인은 이곳에도 mybatis mapper xml
파일을 생성합니다.
(같은 디렉토리에 같은 이름의 파일이 존재 하지 않는 경우에만)
최초에는 skrull 이 파일을 생성하지만, 생성된 후에는 개발자
가 해당 파일을 마음대로 수정하며 개발을 할 수 있습니다.
8. collisions
location : target/skrull-maven-plugin/collisions/
관리주체 :skrull
skrull 이 생성하려는 파일이 src/main/java
, src/main/resources
에 이미 존재하는 경우 (그리고 수정된 경우)
해당 파일을 이곳에 생성합니다.
개발자 model java 파일을 수정한뒤, 테이블 컬럼이 변경된 경우 gen
플러그인을 구동해도 skrull 은 해당 model 파일을 업데이트 하지 않습니다. (개발자의 코드를 보호하기 위해)
이런 경우 개발자는 이곳에서 자동 생성된 해당 파일을 참고해서 필요한 부분의 코드를 가져다가 사용할 수 있습니다.
9. target/skrull-maven-plugin/{package}/
하위 디렉토리
skrull 이 자동으로 install 하지 않는 파일은 이곳에 생성됩니다.
자동으로 install 하지 않는 이유는 다음과 같습니다.
- optional 한 파일인 경우
- 아키텍쳐상 테이블과 1:1 관계가 아닌 경우
- 파일을 install 할 위치가 매우 가변적인 경우
다음은 각 디렉토리별 생성되는 파일 정보입니다.
디렉토리 | 설명 | 파일 타입 |
---|---|---|
frontend/pages | 목록, 상세용 vuejs 파일이 생성됩니다. | .vue |
frontend/services | domain 모델 정보를 가지고 있는 js 파일이 생성됩니다. | .js |
modules | 비즈니스 로직을 수행할 service 자바 파일이 생성됩니다. | .java |
web | RestAPI 용 Resource 자바 파일이 생성됩니다. | .java |
10. 설치 파일 목록
번호 | 위치 | 파일명 | 설명 |
---|---|---|---|
1 | generated-java | {도메인명}_.java | 테이블을 표현하는 base domain 객체 |
2 | {도메인명}Dsl_.java | MyBatis Dynamic SQL 용 base 객체 | |
3 | generated-resources | {도메인명}Repository_.xml | 테이블에 해당하는 base mybatis mapper sql 용 xml |
4 | java | {도메인명}.java | 테이블을 표현하는 domain 객체. 위 1 번 항목을 상속 받는다. |
5 | {도메인명}Dsl.java | MyBatis Dynamic SQL 용 객체. 위 2 번 항목을 상속 받는다. | |
6 | {도메인명}Repository.java | 테이블에 해당하는 mybatis mapper java 인터페이스 | |
7 | resources | {도메인명}Repository.xml | 테이블에 해당하는 mybatis mapper sql xml. 위 6 번 java 파일과 연결된다. 내부에서는 위 3 xml 을 활용한다. |