Maven & Gradle

이광훈·2023년 6월 12일
0

✅ 빌드 자동화 도구(Build Automation Tool)

👉 소프트웨어 개발 프로세스에서 사용되는 도구로, 소스 코드를 컴파일하고 테스트하며 배포 가능한 소프트웨어 빌드를 생성하는 과정을 자동화

이러한 도구는 개발자들이 반복적인 작업을 수동으로 수행하지 않고 소프트웨어를 자동으로 빌드하고 테스트할 수 있도록 지원함

🌐 Maven

👉 Maven은 Java 기반 프로젝트의 빌드, 의존성 관리 및 프로젝트 관리를 자동화하기 위해 사용되는 빌드 자동화 도구

  • 프로젝트의 작업 단계가 고정
  • pom.xml을 이용해 관리하며, XML 기반의 프로젝트 객체 모델(POM, Project Object Model)을 사용하여 프로젝트 설정을 관리

🌐 Gradle

👉 Groovy 또는 Kotlin 언어를 사용하여 빌드 스크립트를 작성하며, JVM 기반 프로젝트뿐만 아니라 Spring Boot, Android와 같은 다양한 플랫폼에서 사용 가능함

  • 기본적으로 Maven보다 성능이 우수
  • build.gradle을 이용해 관리하며, 강력하고 유연한 빌드 시스템을 제공함

❓ Groovy

  • JVM에서 실행되는 스크립트 언어
  • JVM에서 동작하지만 소스코드를 컴파일할 필요 X
  • Java와 호환되며, Java class file들을 Groovy class로 사용 가능

✅ 의존성 관리(Dependency Management)

👉 소프트웨어 개발 프로젝트에서는 다른 개발자나 개발팀이 만든 라이브러리나 프레임워크를 사용하여 개발 작업을 수행하는데,
이때 의존하는 외부 요소의 버전, 위치, 구성 등을 직접 관리해야함

MavenGradle은 인터넷에 연결되어 있으면, 라이브러리를 자동으로 가져온다.

1) Dependency

  • Gradle 기반의 build.gradle을 이용한 의존성 관리
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
  • Maven 기반의 pom.xml을 이용한 의존성 관리
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2) Maven Repository

👉 Maven과 Gradle은 빌드되는 단계에서, 설정파일에 명시된 외부 라이브러리를 외부 저장소에서 가져오는데, 이 외부 저장소Maven Repository라고 함

  • 의존성(dependency)을 검색하고 다운로드할 중앙 저장소를 설정

cf) 가장 유명하고 라이브러리가 다양한 Maven Repository(https://mvnrepository.com/)

3) Group ID & Artifact ID

👉 프로젝트를 고유하게 식별하기 위해 사용하는 두 가지 속성

Group과 Artifact를 합치면 하나의 프로젝트로 식별이 가능

  • Group ID: 해당 프로젝트를 관리하는 그룹 또는 조직을 식별하는 데 사용

    일반적으로 조직의 도메인(주소)를 . 을 구분자로 역순 배치

  • Artifact ID: 프로젝트가 생성하는 결과물의 식별자

    주로 빌드된 JAR 파일, 라이브러리, 애플리케이션 등을 나타냄

  • Gradle 기반의 build.gradle을 이용한 group ID와 artifact ID

    → groupId와 artifactId를 : 을 구분자로 하나의 문자열로 나타낸다.

  • Maven 기반의 pom.xml을 이용한 group ID와 artifact ID

profile
웃으며 일할 때, 시너지가 배가 된다고 믿는 개발자

0개의 댓글