[Gradle Script] 복잡한 QueryDsl 설정 모아서 불러오기
Back-end/Build (Gradle, Maven)2023. 12. 14. 15:23[Gradle Script] 복잡한 QueryDsl 설정 모아서 불러오기

코드는 이곳에 :) https://github.com/progress0407/jvm-tools-2.7.x/tree/main/querydsl-sample 코틀린을 도입하기로 결정했는데 자바 코드를 유지할 부분(공통)과 코틀린 코드를 분리할 일이 생겼다 그때 사용한 방법이다 참고로 나의 경우 자바를 사용하는 모듈, 코틀린 사용 모듈을 모두 나누었다 (즉 한 모듈에 자바, 코틀린이 있는 경우는 없었다) 참고로 코틀린, 롬복, QueryDsl이 모두 있는 상황에서 정상 동작하게 만드는 것은 너무나도 힘들다... 여러분은 굳이 그렇게 하지 말고 나처럼 모듈별로 개별 적용하면 그게 차라리 마음의 건강에 좋을 것이다... Gradle 스크립트 우선 아래와 같은 Java, Kotlin 별 QueryDSL 적용을 위한 ..

[Test Code, Gradle] 각 모듈에 Test Fixture를 공유하고 싶을 때
Back-end/Build (Gradle, Maven)2023. 12. 10. 19:22[Test Code, Gradle] 각 모듈에 Test Fixture를 공유하고 싶을 때

소스 코드는 아래에 있습니다! https://github.com/progress0407/E-Commerce-with-MSA-and-DDD 종종 멀티모듈 환경에서 테스트를 작성할때 이미 작성한 Test Fixture를 공유하고 싶을때가 있다 처음에는 아래처럼 단순히 testImplementation를 붙이면 공유가 가능하다고 생각했다 그렇게 해서는 되지가 않았다... 즉 위처럼 하면 안된다 이런 경우 test-fixture라는 plugin을 추가해서 해결할 수 있다 아래처럼 사용하면 된다 plugins { id 'java-test-fixtures' } 나 같은 경우 common/general이 test-fixture의 기능까지 함께 담당한다 그리고 해당 모듈이 가져야할 dependecny는 testFixt..

[생각 정리] 내가 경험했던 뼈아픈 Gradle 멀티모듈 설계
Back-end/Build (Gradle, Maven)2023. 11. 28. 02:12[생각 정리] 내가 경험했던 뼈아픈 Gradle 멀티모듈 설계

주의 이 글은 매우 김... YAGNI 아직 필요하지 않은 것에 대해 섣불리 구현을 해서는 아니된다는 뜻이다 난 이 원칙을... 멀티모듈 설계를 하면서 뼈저리 느낀 것 같다... 멀티 모듈이 가져다 주는 이점이 무엇인가? 이에 대해 생각하지 않고 먼저 모듈화하면 큰 이득 없이 시스템의 복잡도가 가파르게 올라가는 것을 느꼈다... 개인적으로... 아키텍처의 철학을 투영하기 위한 모듈화는 좋은 예시는 아니라고 생각해요 위 얘기는 내가 곧잘 보는 개발자가 안 좋은 모듈링에 대해 언급한 내용이다 좋은 모듈링이란 제약이 반드시 필요한 곳에 거는 것... 이라고 하였다 자세히는 언급할 수 없으나... 내가 재직하던 회사 중 한 곳의 어떤 프로젝트가 Layer 기준으로 모듈화가 되어 있었다 (아래 예시는 정확하지 않..

Gradle 다시 보기 (정리중)
Back-end/Build (Gradle, Maven)2023. 9. 10. 23:56Gradle 다시 보기 (정리중)

최근에 회사에 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들이 묶여서 ..

[Gradle] 기존의 프로젝트의 이름(group, artifact) 바꾸기
Back-end/Build (Gradle, Maven)2023. 6. 13. 11:19[Gradle] 기존의 프로젝트의 이름(group, artifact) 바꾸기

때로, 기존 프로젝트를 작업하다가 원본 프로젝트를 그대로 둔 채 이름을 바꾸고 싶을 때가 있다 현재 내가 그런 상황에 있다, ticketing-service보다 performance-ticketing-service로 바꾸고 싶은 것,, 이에 따라 Git도 변경해주면 된다 (이건 GPT가 잘 설명해줬다.) 기존에 내가 알고 있던 것과 일치하고, 명령어도 다시 한 번 점검 후 사용했다 Gradle 프로젝트 변경하기 다만 GPT-4가 Gradle 변경은 아쉽게 알려주었다 우선 나의 경우 매번 잊기 때문에 (왜냐하면 이걸 할 일이 많지 않음) 확인하는 수단이 따로 있다 아래 사이트로 이동하자 (이 사이트를 모르면서 Spring 개발하는 분은 없겠지..?) https://start.spring.io/ 자기 상황에..

Gradle dependency 분리 하면서 생긴 문제, 해결
Back-end/Build (Gradle, Maven)2023. 5. 28. 17:38Gradle dependency 분리 하면서 생긴 문제, 해결

멀티모듈을 하면서 갑자기 잘만되던 eureka에 api gateway 등록이 안되었다 문제가 무엇인지 보니 아래처럼 dependency가 없어졌던걸 확인했다 위처럼 applicatoin.yml를 확인하면, 속성을 reslove하지 못한 것 위주로 import하면 해결할 수 있다 (컴파일 문제의 경우 빌드 자체가 실패하기 때문에 쉽게 알아낼 수 있다) 나의 경우 eureka client 의존성이 없는게 문제였다 아래처럼 dependencies 추가하면 간단히 해결된다 dependencies { // Service Registry Client implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' }

Gradle 멀티모듈 - 의존성을 관리하는 두 가지 방법
Back-end/Build (Gradle, Maven)2023. 5. 28. 15:43Gradle 멀티모듈 - 의존성을 관리하는 두 가지 방법

그레이들을 건드리면서 한숨을 참 많이 한것 같다 ( 이 코끼리자식아 ) 머만 하면 컴파일 에러가 뜨지 않나... 자바와는 다르게 빠르게 시행착오를 통해 배우는게 쉽지 않다 사실 지금도 정확히 안다기보다는 대략 이런 느낌으로 하면 버그를 없앨 수 있지않을까... 하면서 진행했던게 도움이 되었다 공식문서, 유튜브 등을 참고 해봤지만 크게 도움되지는 않았던 것 같다 서론이 길었다, 멀티 모듈하면서 공통 의존성들이 많이 생긴다. 이걸 관리하는 방법은 크게 두 가지이다 이펙티브 자바식으로 얘기하면 상속과 조합이다 (Gradle에서 공식적으로 사용하는 용어가 아닙니다!) 상속 부모 디렉터리에 공통 의존성을 정의한다 그러면 자식은 그 의존성을 받기만 하면 되며 별다른 설정은 하지 않아도 된다 예를 들면, 내가 실제로..

Gradle 성능 최적화
Back-end/Build (Gradle, Maven)2023. 5. 12. 02:30Gradle 성능 최적화

여러 블로그에서 소개한 방법대로 gradle.properties에 캐싱, 병렬처리 등을 추가해서 비교해보았다 사내 프로젝트를 기준으로 22초 -> 7초로 줄어든 것을 확인하였다... 작은 설정으로 큰 쾌거를 이루었다 참고 gradle build 속도 | 폭간의 기술블로그 (sejoung.github.io) Improve the Performance of Gradle Builds

Gradle 멀티 모듈하면서 배운 것들
Back-end/Build (Gradle, Maven)2023. 5. 12. 02:15Gradle 멀티 모듈하면서 배운 것들

Gradle을 통해서 멀티 모듈로 구성을 할 수 있다 나는 MSA를 하기 위해 구성했다 이렇게 하면 좋은 점 중 하나는 아래처럼 인텔리제이가 지원하는 기능을 사용할 수 있다 프로젝트 최상단에 build.gradle을 두면 각 모듈은 해당 파일을 기본적으로 먼저 해당 정보를 적용한다 allprojects { ... } subprojects { ... } allprojects는 루트 모듈과 모든 하위 모듈에 대해 subprojects는 루트 모듈을 제외한 모든 하위 모듈에 대해 적용을 하겠다는 block이다 이렇게 해서 공통 설정 정보를 몰아넣을 수 있다 만일 어떤 한 모듈만 루트의 build.gradle의 어느 한 의존성만 사용하고 싶지 않을 때가 있다 예를들어, 루트 build.gradle에는 톰캣 기반..

Maven - New Lecture 강의록
Back-end/Build (Gradle, Maven)2020. 10. 1. 20:46Maven - New Lecture 강의록

https://www.youtube.com/watch?v=oPEY7xawQlg&list=PLq8wAnVUcTFWRRi_JWLArMND_PnZM6Yja&index=3 1강 : Maven 개념 2강 : Maven 설치 및 환경변수 설정 http://maven.apache.org/download.cgi Maven – Download Apache Maven Downloading Apache Maven 3.6.3 Apache Maven 3.6.3 is the latest release and recommended version for all users. The currently selected download mirror is http://mirror.navercorp.com/apache/. If you enco..

Maven 참고할 들
Back-end/Build (Gradle, Maven)2020. 10. 1. 20:38Maven 참고할 들

https://m.blog.naver.com/PostView.nhn?blogId=hodolbak&logNo=220479777542&proxyReferer=https:%2F%2Fwww.google.com%2F 이클립스 톰캣 연동 #2 - Dynamic Web Project 이클립스 톰캣 연동 두번째는 실제 웹을 띄워보는 거다. (연동이 이게 전부지 뭐)이것은 이클립스에서 만든... blog.naver.com 이클립스 톰캣 연동 #2 - Dynamic Web Project 이클립스 톰캣 연동 두번째는 실제 웹을 띄워보는 거다. (연동이 이게 전부지 뭐)이것은 이클립스에서 만든... m.blog.naver.com Run On Server 할 때, Apache를 선택하는 란이 없다면.. https://jeong..

image