DB의 접근기술

(JAVA) Gradle, Maven, 저장소란 뭘까?

mynote6676 2025. 5. 26. 18:52

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.프로젝트에 추가.

 

저장소의 중요성

- 편리함 : 수동으로 파일을 찾을 필요 없음.

- 최신성 : 최신 버전 사용 가능.

- 관리 : 의존성 충돌을 자동 해결.

 

| 참고 링크

https://mvnrepository.com/

 

 

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. 빌드 툴을 사용해야 하는 이유

 

더보기

생산성 : 반복 작업 자동화로 시간 절약.

품질: 테스트와 빌드 과저에서 오류 감소.

협업 : 팀 전체가 동일한 환경 공유

확장성 : 큰 프로젝트도 쉽게 관리.

 

결론 : 빌드 툴은 개발을 더 빠르고 쉽게 만들어주는 필수 도구입니다.