공통 모듈 만들기 - DevCamp2Flame/FlameTalk_Server GitHub Wiki

22.01.25

1. Spring boot 모듈 생성

  • 하위 폴더 구조 잡고, 필요한 class 폴더링 하여 옮기기

2. 심볼릭(Symbolic) 링크 생성

windows에서 만드는 심볼릭 링크

원하는 곳에 cd 명령어를 통해 이동하고,

mklink /d [생성할 폴더 이름] [원본 주소] 를 입력하면, 생성할 폴더 이름 아래에 원본 주소에 존재하는 폴더가 생성되고, 생성된 링크는 참조 링크이기 때문에, 원본 파일을 변경하든, 링크로 만들어진 파일을 수정하든, 어떤 파일을 수정해도 변동 사항이 동시에 모두 적용된다.

// domain 폴더
cd C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\auth\\src\\main\\java\\com\\devcamp\\flametalk\\user
mklink /d common_domain C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\common\\src\\main\\java\\com\\devcamp\\flametalk\\common\\domain
 
// util 폴더
cd C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\auth\\src\\main\\java\\com\\devcamp\\flametalk
mklink /d common_util C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\common\\src\\main\\java\\com\\devcamp\\flametalk\\common\\util
 
// repository 폴더
cd C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\auth\\src\\main\\java\\com\\devcamp\\flametalk\\user
mklink /d common_repository C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\common\\src\\main\\java\\com\\devcamp\\flametalk\\common\\repository
 
// type 폴더
cd C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\auth\\src\\main\\java\\com\\devcamp\\flametalk\\user
mklink /d common_type C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\common\\src\\main\\java\\com\\devcamp\\flametalk\\common\\type
 
// error
cd C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\auth\\src\\main\\java\\com\\devcamp\\flametalk\\global
mklink /d common_error C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\common\\src\\main\\java\\com\\devcamp\\flametalk\\common\\error
 
// response
cd C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\auth\\src\\main\\java\\com\\devcamp\\flametalk\\global
mklink /d common_response C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\common\\src\\main\\java\\com\\devcamp\\flametalk\\common\\response

그 이후에는 해당 파일을 import 하여 사용하면 된다.

관련이슈

Git

stash 는 최고의 명령어이다.

feature/common 에서 작업했어야 했는데 feature/auth에서 진행해버려서, 인증 서버 작업 파일과, common 공통 모듈로 만들고자 하는 파일끼리 꼬여버렸다.

이러한 branch 문제를 stash 명령어를 통해 해결할 수 있었고, checkout 으로 이전 커밋으로 돌아가는 등 git 에 대해 배울 수 있었다.

CMD

관리자 권한으로 실행해야 함

// common 모듈 한 번에 불러오기 - Common Application 까지 불러와서 실행이 안됨
cd C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\auth\\src\\main\\java\\com\\devcamp\\flametalk
mklink /d common_module C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\common\\src\\main\\java\\com\\devcamp\\flametalk\\common
 
// common 모듈 한 패키지에 몰아두기
cd C:\\Users\\daromkim\\IdeaProjects\\flame_backend\\auth\\src\\main\\java\\com\\devcamp\\flametalk\\common
위에 작성된 mklink 6 개 연달아 실행하면 됨.

파일인식, 폴더구조-foldering

원래는 domain 폴더에 Status, repository 등 모든 파일이 같이 있었는데, User 도메인 파일에서 한 파일내에 있는 status 를 인식하지 못하는 이슈가 발생했다.

repository 에서도 마찬가지로 User를 인식하지 못했다.

이런 이슈를 해결하기 위해서, common 에서 파일을 폴더별로 나눴고, 폴더별로 나눴기 때문에 import 문이 추가되어 다른 폴더에 존재하는 다른 파일을 인식할 수 있게 되었다.

같은 폴더에 있을 때는 import 문이 필요하지 않았는데, auth 서버에서 심볼릭 링크로 파일을 가져온 뒤로는 별도의 import 문이 없을 때는 다른 파일을 인식하지 못하는 것 같다. 그래서 폴더링을 다르게 했고, 다행히 이 방법으로 했을 때는 auth 서버에서도 import 문을 보고 파일을 잘 찾아서 application 실행 시키고, API reqeust test 까지 완료했다.

그런데, 기존 테스트에서는 동작했던 ErrorResponse, ErrorCode가 ClobalExceptionhandler 에서 인식이 안됨. 인식을 못함.

물론 같은 폴더였지만 이미 시간이 많이 지난 터라 더 이상 공통 모듈에 매달릴 수 없어 결국에는 rollback 하고 우선순위가 높은 다른 작업을 진행하기로 했다.

git submodule

Oasis 황종훈님께서 공유해주신 공통모듈 관리 방법

https://leveloper.tistory.com/176