(JAVA) Gradle, Maven, 저장소란 뭘까?
1 . 빌드 툴이란?
빌드 툴의 정의
빌드 툴은 소프트웨어 개발에서 소스 코드를 실행 가능한 프로그램으로 만드는 과정을 자동화하는 도구입니다.
- 예 : 자바 코드(.java)를 컴파일하여 실행 가능한 .jar 파일로 변환
- 주요 작업 : 코드 컴파일, 의존성 관리, 테스트 실행, 패키징.
비유 : 빌드 툴은 공장 조립 라인과 같습니다. 원자재(소스 코드)를 받아 완제품(프로그램)을 생산합니다.
빌드 툴을 왜 사용하나요?
1.시간 절약
-수동으로 컴파일하고 라이브러리를 추가하면 시간이 많이 걸립니다.
-빌드 툴은 한 번의 명령어로 모든 작업을 처리합니다.(예 ; mvn package)
2. 복잡성 감소
- 프로젝트에 필요한 외부 라이브러리(의존성)를 자동으로 관리.
- 예 : MySQL 연결 라이브러리를 수동으로 다운로드할 필요 없음.
3.일관성 유지
- 팀원 모두 동일한 환경에서 작업 가능.
- " 내 컴퓨터에서는 되는데...." 문제를 방지.
4.자동화와 배포
-테스트와 배포 과정을 자동화.
-CL/CD(지속적 통합/배포)와 통합 가능.
예시 :
-빌드 툴 없이 ; jar 파일을 직접 다운로드하고, 컴파일 명령어를 입력하고, 패키징까지 수동으로 해야함.
- 빌드 툴 사용 : 설정 파일에 몇 줄 추가하면 모든 과정이 자동으로 진행.
2.주요 빌드 툴 : Gradle 과 Maven
Maven이란 ?
-정의 : XML 기반의 빌드 툴로, 표준화된 구조와 과정을 제공합니다.
- 특징
설정 파일 : pom.xml(xml형식).
표준 디렉토리 : src/main/java, src/test/java.
빌드 단계 : compile, test, package등.
장점
- 설정이 간단하고 초보자 친화적.
-프로젝트 구조가 일관적.
단점
- 유연성이 부족하고 XML이 길어질 수 있음.
예시
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.23</version>
</dependency>
Gagle이란?
-정의 : Groovy 또는 Kotlin 기반의 유연한 빌드 툴입니다.
- 특징
설정 파일 : build.gradle(간결한 스크립트 형식).
증분 빌드 : 변경된 부분만 빌드하여 속도 빠름.
플러그인 : 다양한 기능 확장 가능.
- 장점 :
Groovy 또는 Kotlin 기반의 유연한 빌드 툴입니다.
특징
-설정 파일: build.gradle(간결한 스크립트 형식).
-증분 빌드 ; 변경된 부분만 빌드하여 속도 빠름.
-플러그인 ; 다양한 기능 확장 가능.
장점 :
- 대규모 프로젝트에 적합.
-설정이 자유롭고 강력함.
단점 :
-초보자에게는 학습이 필요할 수 있음.
예신
dependencies {
implementation 'org.springframework:spring-core:5.3.23'
}
Gradle VS Manven
- Maven 선택 :
간단한 프로젝트, 표준 구조 선호 시.
-Gradle 선택:
- 복잡한 프로젝트, 빠른 빌드 필요 시.
비유 : Maven은 규칙적인 레고 조립, Gradle은 자유로운 점토 작업.
3.저장소(Repository)란?
3.저장소(Repository) 란 ?
저장소의 정의
저장소는 라이브러리와 플러그인을 저장하고 배포하는 공간입니다.
-빌드 툴이 의존성을 다운로드하는 곳.
-예 : Maven Central, JCenter.
저장소의 종류
1.원격 저장소
- 온라인에 있는 공용 저장소.
-예 : Maven Central에서 Spring 라이브러리 다운로드.
2. 로컬 저장소
-내 컴퓨터에 저장된 캐시.
- 예 : ~/.m2(Maven), ~/gradle(Gradle)
저장소의 동작
1. 설정 파일에서 의존성 확인.
2.로컬 저장소에 있는지 확인.
3.없으면 원격 저장소에서 다운로드.
4.프로젝트에 추가.
저장소의 중요성
- 편리함 : 수동으로 파일을 찾을 필요 없음.
- 최신성 : 최신 버전 사용 가능.
- 관리 : 의존성 충돌을 자동 해결.
| 참고 링크
4.빌드 툴 사용 해보기
Intellij에서 새로운 Gradle 프로젝트 생성하기
먼저 , intellij IDEA를 열고 새로운 Gradle 프로젝트를 생성합니다.
-intellij 를 실행한 후, 메뉴에서 file > new > project를 선택하세요.
-왼쪽 사이드바에서 Gradle을 선택하고, 언어로 java를 체크한 후 next를 클릭하세요.

기본 프로젝트 만들어 보기 (한글 깨짐 확인)

Groupld와 Artifactld란?
- Groupld : Maven이나 Gradle 프로젝트에서 프로젝트를 고유하게 식별하기 위한 네임스 페이스입니다. 일반적으로 조직이나 회사의 도메인 이름을 사용하며, 예를 들어 comm.example처럼 표현됩니다. 이는 여러 프로젝트가 겹치지 않도록 구분하는 역활을 합니다.
-Artifactld : 프로젝트의 이름입니다. 예를 들어 myproject처럼 설정하며, Groupld와 함께 조합되어 해당 프로젝트를 저장소에서 식별하거나 다른 프로젝트가 의존성으로 사용할 때 고유하게 구분합니다.
즉, Groupld : com.example, Artifactld:myproject를 입력하면 이 프로젝트는 com.example:myproject라는 고유한 식별자를 가지게 됩니다. 이는 프로젝트를 빌드하거나 배포할 때 필수적인 정보입니다.
Gradle SDK를 다운로드 받아야 함(또는 기다리면 자동 설정 됨)

Main.java 파일 생성 후 기본 코드 작성(한글깨짐 확인)

한글깨짐 해결하기
-인텔리제이 파일 인코딩 확인 하기 (Editor / file Encodings)

VM에 UTF- 8 설정하기

-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8
Build Tools 에 그래이들 설정 변경하기

코드 다시 실행해서 한글깨짐 해결 확인하기
public class Main {
public static void main(String[] args) {
System.out.println("그래이드 빌드 툴 도구를 사용해서 프로젝트 생성");
}
}
그래이들 프로젝트의 기본 패키지 구조를 확인하자.
myproject
├── build.gradle # Gradle 빌드 설정 파일
├── gradlew # Gradle Wrapper 실행 파일 (Unix)
├── gradlew.bat # Gradle Wrapper 실행 파일 (Windows)
├── settings.gradle # Gradle 설정 파일
└── src
├── main
│ ├── java # Java 소스 코드 디렉토리
│ └── resources # 리소스 파일 디렉토리
└── test
├── java # 테스트 코드 디렉토리
└── resources # 테스트 리소스 디렉토리
1. build.gradle - Gradle 빌드 설정 파일
- 역활 : 이 파일은 프로젝트를 빌드(만드는 과정)할 때 필요한 모든 설정을 정리한 곳이야. 어떤 도구(라이브러리)를
사용할지. 어떤 규칙(플러그링)을 적용할지, 빌드 과정을 어떻게 할지 등을 정의함.
( 만약 데이터베이스를 사용하려면 implementation 'com.mysql:mysql-connector-j-8.3.0' 같은
줄을 추가 해서 MySQL도구를 가져와
2. gradlew-Gradle Wrapper 실행 파일
역활 ; Unix 시스템 (리눅스나 macOS 같은 운영체제)에서 Gradle을 실행해주는 파일이야. Gradle은 프로젝트를 빌드하는 도구인데, 이 파일 덕분에 Gradle을 따로 설치하지 않아도 됨. 프로젝트에 gradle이 이미 포함되어 있다고 생각하면 됨
3.gradlew.bat- Gradle Wrapper 실행 파일 (Window)
역활 :이 파일은 Windows에서 Gradle을 실행해주는 파일. gradlew와 똑같은 일을 하지만
Windows환경에 맞게 만들어지는 파일.
4.settings.gradle - Gradle 설정 파일 (프로젝트 이름 확인)
역활 : 이 파일은 프로젝트의 전체 구조를 정의해줘. 프로젝트 이름이 뭐고, 여러 작은 프로젝트(모듈)가 포함되어 있다면
그걸 알려주는 역활을 함.
|실습 하기 - 프로젝트 생성 후 확인(lib 추가 후 반드시 그래이들 새로 고침 실행)

plugins {
id 'java' // Java 플러그인 추가
id 'groovy'
}
| MySQL 설정 - MySQL connector/J 설정
// https://mvnrepository.com/artifact/com.mysql/mysql-connector-j
implementation("com.mysql:mysql-connector-j:8.3.0")
룸복 의존성 설정
// Lombok 의존성 (최신 버전 및 최적화된 설정)
compileOnly 'org.projectlombok:lombok:1.18.36'
annotationProcessor 'org.projectlombok:lombok:1.18.36'
Lombok 의존성 (최신 버전 및 최적화된 설정)
// Lombok 의존성 (최신 버전 및 최적화된 설정)
compileOnly 'org.projectlombok:lombok:1.18.36'
annotationProcessor 'org.projectlombok:lombok:1.18.36'
Lombok은 컴파일 시에만 필요한 라이브러리입니다. 런타임에는 필요하지 않으므로 implementation을 사용하면
불필요히게 런타임에도 포함됩니다.
또한 ,annotationProcessor가 없으면 Lombok의 애너테이션 처리(@Getter,@Setter 등 )가 제대로
동작하지 않을 수 있습니다.
5. 빌드 툴을 사용해야 하는 이유
생산성 : 반복 작업 자동화로 시간 절약.
품질: 테스트와 빌드 과저에서 오류 감소.
협업 : 팀 전체가 동일한 환경 공유
확장성 : 큰 프로젝트도 쉽게 관리.
결론 : 빌드 툴은 개발을 더 빠르고 쉽게 만들어주는 필수 도구입니다.