Gradle 다시 보기 (정리중)
최근에 회사에 n단계 depth에 걸친 gradle이 있어서 여러 고민에 있다
아래에 예시로 둔 프로젝트가 있다
이 상황을 가정해서 한 번 진행하고자 한다
https://github.com/progress0407/multi-module-gradle-project
GitHub - progress0407/multi-module-gradle-project: 멀티 모듈 프로젝트 연구 및 연습용 리포지토리
멀티 모듈 프로젝트 연구 및 연습용 리포지토리. Contribute to progress0407/multi-module-gradle-project development by creating an account on GitHub.
github.com
task: 하나의 빌드 작업
plugin: task들이 묶여서 사용자가 편히 쓸수 있도록 한것
subprojects: 하위 모듈들 전부
allprojects: subprojects + root proejct
gradle이 maven보다 빠른 이유?
- 점진적으로 빌드함 (이전 내용을 캐싱)
- 이미 빌드한게 있으면 하지 않음
- 데몬 프로세스가 돌아가면서 캐싱
거의 모든 시나리오에서 최소 2 ~최대 100 maven보다 빠르다
implementaion: 자신을 의존하는 모듈에게만 영향
api: 자신을 의존하는 모듈과 그 모듈을 의존하는 모듈들에게도 영향
java-library plugin: 위 api 기능을 사용하려면 해당 plugin을 사용해야 한다
Gradle Daemon
Gradle 명령어를 사용하기 위한 JVM이 백그라운드 프로세스로 항상 떠 있는 것
이 덕분에 항상 빠르게 gradle 을 실행할 수 있다 (또 메모리 캐시 등으로 task 등을 캐싱한다고 한다)
Build Tool 선택: intelliJ vs Gradle
속도 상은 intelliJ가 빠른데.. 몇몇 기능이 안될수있다
프로젝트가 조금만 복잡해져도 Gradle로 가는게 좋다고 생각한다
QueryDsl 동작 이해
@Entity 혹은 @QueryProjections이 부착된 클래스 대상으로
Q Class File을 미리 컴파일하고 특정 패키지로 몰아 넣는다
그리고 해당 패키지를 참조할 수 있는 설정이 gradle script에 있다면, 해당 File들을 import할 수 있다
이런 방식으로 동작한다
Lombok 동작 이해
사실 이 부분은 잘 이해되지 않았다
class 파일로 빌드하기 전에, 미리 compile한 것처럼 보여주는 것 같다
annotation processor 부분을 이해하면 될텐데... 쉽게 이해되지 않았다
compile build 위치가 아닌, 특정 메모리 영역에 기억을 시키고 실시간으로 load하는 것처럼 보이긴 했다...
tool-chain
이 기능을 이용하면 dev-ops할때 유용하다고 바로 생각했다
프로젝트마다 다른 Java파일을 미리 설치하지 않고 그때그때 마다 실행할 수 있게 도와준다
예를 들면 프로젝트 a는 jdk 8, c는 17이면 두 jdk가 필요하지만 tool-chain 설정을 하면
미리 위 두 jdk 가 없어도 즉시 다운로드 + 세팅되어서 java 명령어를 실행할 수 있다
참고한 글들
https://techblog.woowahan.com/2637/
멀티모듈 설계 이야기 with Spring, Gradle | 우아한형제들 기술블로그
{{item.name}} 멀티 모듈 설계 이야기 안녕하세요. 배달의민족 프론트 서버를 개발하고 있는 권용근입니다. 멀티 모듈의 개념을 처음알게 되었을 때부터 현재까지 겪었던 문제점들과 그것을 어떻게
techblog.woowahan.com
https://mangkyu.tistory.com/296
[Gradle] Gradle Java 플러그인과 implementation와 api의 차이
이번에는 Gradle(그레이들)이 제공하는 Java 플러그인과 implementation와 api의 차이에 대해 알아보도록 하겠습니다. 1. Gradle Java 플러그인, Java-Library 플러그인 [ Java 플러그인이란? ] Gradle(그레이들)에서
mangkyu.tistory.com
https://mangkyu.tistory.com/304
[Server] 멀티 모듈을 설계하는 관점과 고려사항 with Spring & Gradle
이번에는 유지보수하기 좋은 멀티 모듈 구조를 설계하는 기준과 그에 따른 고려사항에 대해 알아보도록 하겠습니다. 아래의 내용은 절대적인 기준이 아니며, 상황에 따라 달라질 수 있음을 참
mangkyu.tistory.com