Gradle8 [개발자의 Gradle] Configurations? 누구냐 너! -1 혹시 아래와 같은 구문을 본 적이 있을까?// groovy DSLconfigurations { compileOnly { extendsFrom annotationProcessor }}// kotlin DSLval compileOnly by configurationsval annotationProcessor by configurationscompileOnly.extendsFrom(annotationProcessor)둘 중에 뭘로 쓰든 그 의미는 compileOnly라는 configurations 객체가 annotationProcessor라는 configurations 객체를 상속하게 만든다. 즉, annotationProcessor에 적용된 의존성이 전부 compileOnly에도 적용.. 2025. 8. 1. [개발자의 Gradle] 변수를 사용하는 여러가지 방법 Gradle에 변수를 선언하는 방법이 여러 가지 있다.gradle.properties - 전역 변수 설정settings.gradle.kts - 빌드 구성용 변수 설정build.gradle.kts (root) - 하위 모듈에 전달할 변수 설정build.gradle.kts (sub) - 로컬 변수 설정1) 전역변수 설정 (gradle.properties)javaVersion=21jacksonVersion=2.19.0junitVersion=5.13.3위처럼 써두면 전체 빌드과정에서 가져다 쓸 수 있다.그리고 이 변수는 Gradle Project Property(-P)로 덮어쓸 수 있다.ex>./gradlew build -PjavaVersion=17 settings.gradle.ktsval springBootV.. 2025. 7. 30. [Gradle] 설정 파일 구조 완전 정복! 진짜 핵심적인 파일들의 구조를 한번 파헤쳐 보자. 내가 생각할때 핵심 설정 파일들은 아래 3가지다.gradle.propertiessettings.gradle.ktsbuild.gradle.kts실행 순서에 따라서 먼저 gradle.properties 부터 살펴보자!gradle.propertiesjavaVersion=21jacksonVersion=2.19.0junitVersion=5.13.3gradle.properties 파일은 전역으로 환경설정할 때 사용한다.여기서는 전역으로 사용할 버전의 정보들을 관리하고 있다.이렇게 해두면, 버전은 이곳에서 한 번에 관리할 수 있다.1 Line : JDK 버전2 Line : Jackson 라이브러리 버전3 Line : Junit버전이 파일에 버전들을 위와 같이 써 넣는.. 2025. 7. 15. [Gradle] Phase Gradle 빌드는 아래 이미지와 같이 3개의 Phase(단계)로 구성되어있다.1. 초기화 단계 (Initialization Phase)어떤 프로젝트(들)를 빌드할지 정하는 단계멀티 프로젝트의 경우 이 단계에서 모든 하위 프로젝트 인식함.settings.gradle.kts 실행settings.gradle.kts 파일에서 project 변수 사용 불가. (project 객체가 초기화 되기 전 시점)이 단계에서 사용 가능한 변수 / 사용 파일 위치gradle / settings.gradle.kts, build.gradle.ktssettings / settings.gradle.ktsrootProject / settings.gradle.kts (제한적 사용 가능.. 안된다고 이해하는게 좋을듯..)2. 설정 단계.. 2025. 7. 10. [Gradle] Gradle Task, 왜 이렇게 많고 헷갈리는 거야? Gradle 공식 사이트에서 Task LifeCycle을 보면 다음과 같다. compileJava, processResouces, jar, build, clean...너무 많은거 같은데. 이게 뭘 하는거지..? 위 Task LifeCycle 이미지에서 각각의 파란색 사각형들은 Task다. Gradle Task는 크게 "작업 태스크"와 "집계 태스크"로 분류 할수 있다.작업 태스크 (Action Task)compileJavaprocessResourcescompileTestJavaprocessTestResourcestestjarclean작업 태스크는 직접 일을 하는 Task다.Compile컴파일(compile) 접두사가 붙은 Task(compileJava, compileTestJava)들은 모두 "번역"이라.. 2025. 7. 9. [Gradle] groovy가 좋은거예요? kotlin이 좋은거예요? Gradle을 처음 쓸때는 Groovy 기반으로 Gradle DSL을 작성했었다. 지금은, 몇 가지 불편사항 때문에 Kotlin 기반 Gradle DSL을 사용하고 있다. 1. 느슨한 문법 체크Groovy는 아래 3가지 경우를 모두 동일하게 인식한다.// Groovydependencies { implementation 'org.springframework.boot:spring-boot-starter-web:3.5.0' // 1번 implementation "org.springframework.boot:spring-boot-starter-test:3.5.0" // 2번 implementation('org.springframework.boot:spring-boot-starter-web:3.5.. 2025. 6. 9. [Gradle] 프로젝트가 어떻게 생겼을까? Gradle 프로젝트를 일단 한번 만들어보자. 나는 Intellij Ultimate, JDK 21, Gradle DSL은 Kotlin을 쓴다.참고! Gradle DSL? Gradle DSL은 Gradle 빌드 시스템에서 사용하는 도메인 특화 언어(Domain Specific Language)다. 쉽게 말해서 우리가프로젝트를 빌드할 때 필요한 설정, 의존성, 플러그인 적용, 태스크 등록 등 모든 작업을 정의하는 언어라고 할 수 있다. 기존에는 Groovy 기반으로 많이 썼엇는데, 요즘에는 거의 Kotlin 기반으로 쓰고 있는것 같다. 내 경우에 Kotlin을 DSL 언어로 채택한 이유는 엄격한 문법체크 때문이다. 엄격한 문법 체크는 빌드 스크립트 자체의 통일성을 보장해주고, 유지보수를 쉽게 만든다고 생각.. 2025. 6. 9. [Gradle] 멀고도 가까운.. 개발자로 일 하면서 Gradle을 익숙하게 쓰고는 있지만(주로 의존성 관리만 ㅎㅎ..), 잘 알지는 못하고 쓴다는 생각이 들었다. 말 그대로 가깝고도 먼 사이.. 요즘들어서는 AI와 같이 일하면서, 자꾸 거짓말에 당하다보니.. 내가 아는게 중요하다는 생각이 들기도 해서. 정리해본다. 아무튼! 시작해보자.개발환경아래와 같은 환경에서 학습하고있다.OS : Intel MacJava : JDK 21Gradle : 8.13 (Kotlin DSL)IDE : Intellij Ultimate, WindsurfChatGPT : PLUSGitHub : https://github.com/koojeongwoon/learn-gradle.gitGradle이 뭐야? 개발을 하다보면, 작성한 소스 코드를 '컴파일'하고, 테스트를 수.. 2025. 6. 4. 이전 1 다음