Gradle, 나는 왜 이걸 쓰고 있었을까?

Git으로 예전 프로젝트와 다시 연결하고 개발환경까지 어느 정도 세팅했다.
JDK 17을 설치하고, IntelliJ를 설치하고, GitHub도 다시 만들었다.
그리고 이제 실제로 Spring Boot 프로젝트를 하나 만들어보기로 했다.
그런데 프로젝트를 생성하자마자 익숙한 파일 하나가 눈에 들어왔다.
build.gradle
예전 회사에서도 수도 없이 봤던 파일이다.
라이브러리가 필요하면 여기다가 한 줄 추가했고,
에러가 나면 Gradle Refresh를 눌렀고,
빌드가 안 되면 인터넷에서 검색해서 이것저것 수정했다.
그런데 다시 공부를 시작하면서 갑자기 이런 생각이 들었다.
“근데 Gradle이 정확히 뭐였지?”
사용할 줄은 알았는데,
왜 쓰는지는 제대로 설명하지 못했다.
Gradle은 프로젝트를 만들어주는 빌드 도구다
Java 파일을 작성했다고 해서 바로 우리가 사용하는 프로그램이 되는 것은 아니다.
코드를 컴파일해야 하고,
필요한 라이브러리를 가져와야 하고,
테스트도 해야 하고,
마지막에는 실행 가능한 jar 파일도 만들어야 한다.
이 과정을 직접 하나하나 하기에는 너무 번거롭다.
그래서 사용하는 것이 Build Tool이다.
Java에서는 대표적으로 Maven과 Gradle이 있다.
Gradle에게
이 프로젝트는 Java 17을 사용하고
Spring Boot를 사용하고
이런 라이브러리들이 필요해.
라고 알려주면,
Gradle이 필요한 라이브러리를 가져오고 프로젝트를 빌드해준다.
dependencies는 단순한 라이브러리 목록이 아니었다
Spring Boot 프로젝트를 만들면 이런 코드가 보인다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
예전에는 그냥
“라이브러리 추가하는 곳.”
이라고 생각했다.
틀린 설명은 아니지만 조금 더 정확히 말하면,
현재 프로젝트가 동작하기 위해 필요한 의존성(Dependency)을 Gradle에게 알려주는 부분이다.
예를 들어
implementation 'org.springframework.boot:spring-boot-starter-web'
을 추가하면 웹 개발에 필요한 Spring MVC 관련 라이브러리들을 Gradle이 가져온다.
예전처럼 필요한 jar 파일을 직접 찾아서 넣을 필요가 없다.
생각해보면 나는 이 편리한 기능을 매일 사용하면서도,
정작 Gradle이 무슨 일을 하는지는 별로 생각하지 않았던 것 같다.
gradlew는 또 뭐였을까?
프로젝트 안을 보면 이런 파일도 있다.
gradlew
gradlew.bat
그리고 빌드할 때는 이런 명령어를 사용할 수 있다.
./gradlew build
Windows에서는
gradlew.bat build
이걸 Gradle Wrapper라고 한다.
쉽게 말하면,
“이 프로젝트가 사용하는 Gradle 환경을 프로젝트에 같이 넣어두는 것.”
이라고 이해했다.
개발자마다 Gradle 버전이 다르면
“내 컴퓨터에서는 되는데?”
같은 상황이 생길 수 있다.
Gradle Wrapper를 사용하면 프로젝트에서 지정한 Gradle 환경으로 실행할 수 있기 때문에 개발환경 차이를 줄여준다.
그리고 이번에는 Claude Code도 같이 쓰기 시작했다
이번 공부에서 예전과 달라진 것이 하나 있다.
AI 개발 도구를 적극적으로 사용하고 있다는 것이다.
나는 요즘 Claude Code(클로드 코드)도 같이 사용하고 있다.
예전 같았으면 Gradle 오류가 발생했을 때
에러 메시지 복사
↓
구글 검색
↓
Stack Overflow
↓
블로그 여러 개 확인
↓
코드 수정
이런 과정을 거쳤다.
지금은 터미널에서 Claude Code에게 바로 물어볼 수도 있다.
예를 들어
build.gradle에서 이 dependency가 왜 필요한지 설명해줘.
혹은
현재 프로젝트의 Gradle 설정을 확인하고 문제가 있는 부분을 찾아줘.
처럼 질문할 수 있다.
코드 전체 흐름을 보면서 설명을 받을 수 있다는 점은 확실히 편했다.
하지만 AI에게 코드를 맡기는 것이 목표는 아니다
여기서 내가 정한 원칙이 하나 있다.
AI가 작성했다고 그냥 넘어가지 않는다.
Claude Code가 코드를 만들어주더라도
왜 이렇게 작성했는지,
Gradle에서는 어떤 설정이 바뀌었는지,
Spring에서는 이것이 어떤 역할을 하는지
한 번은 직접 확인하려고 한다.
이번에 다시 개발 공부를 시작한 이유 자체가
코드를 빨리 만드는 개발자보다, 내가 작성한 코드가 왜 동작하는지 설명할 수 있는 개발자가 되고 싶어서이기 때문이다.
AI는 그 과정을 빠르게 도와주는 도구로 사용하고 있다.
예전에는 실행만 되면 됐다
회사에서 개발할 때는 일정이 있었다.
기능을 만들어야 했고,
오류가 나면 빨리 해결해야 했고,
서비스를 완성하는 것이 우선이었다.
그래서
build.gradle 수정
→ Gradle Refresh
→ 실행
되면 넘어가는 경우가 많았다.
하지만 다시 공부하면서 조금씩 질문을 바꾸고 있다.
“어떻게 하면 되지?”
에서
“왜 이렇게 되는 거지?”
로.
Git을 다시 공부했고,
이번에는 Gradle을 다시 보고 있다.
그리고 예전에는 없었던 Claude Code 같은 AI 개발 도구도 같이 사용하고 있다.
기술은 많이 달라졌지만,
결국 개발자가 해야 할 일은 비슷한 것 같다.
도구를 사용하는 것과 도구를 이해하는 것은 다르다.
이번에는 그 차이를 하나씩 채워보려고 한다.
'RE:개발자' 카테고리의 다른 글
| OCR로 개인정보를 찾기 시작했다, 하드코딩을 걷어낸 날 | RE:개발자 #6 (0) | 2026.09.18 |
|---|---|
| Spring Boot로 REST API를 만들었는데, 아직 아무것도 분석하지 않았다 | RE:개발자 #5 (0) | 2026.09.17 |
| Spring Boot 실행 버튼을 누르면 실제로 무슨 일이 일어날까? | RE:개발자 #4 (0) | 2026.09.17 |
| Git을 매일 썼는데, 다시 시작하니 아무것도 기억나지 않았다 | RE:개발자 #2 (0) | 2026.09.16 |
| 자바 개발자인데, 나는 정말 자바를 알고 있었을까? | RE:개발자 #1 (0) | 2026.09.15 |