본문 바로가기
Programming/Spring

[Spring] Maven과 Gradle

by 가가가가가가 2024. 4. 17.
반응형

● Maven과 Gradle의 공통점

  - 프로젝트 빌드, 종속성 관리, 배포 등을 자동화하는 도구

    => 개발 프로세스를 단순화하여 개발자의 업무를 줄여줌

    => 현대 소프트웨어 개발에서 필수적

 

1. 의존성 관리

    - 프로젝트는 종종 다른 라이브러리나 프레임워크에 의존 → 외부 라이브러리를 쉽게 관리할 수 있도록 도와줌

    - 개발자가 프로젝트에 필요한 의존성을 정의하면, 자동으로 의존성을 다운로드하고 프로젝트에 포함시킴

 

2. 프로젝트 빌드

    - 프로젝트 빌드 자동화 및 단순화

    - 개발자가 자동화를 위한 설정을 작성하면, 컴파일, 테스트 실행, 리소스 복사, 패키징 등과 같은 작업 실행

 

3. 표준화

    - 프로젝트 구조와 빌드 스크립트의 표준화된 형식을 제공

        → 프로젝트 관리 및 협업을 간단하게 만들어줌

        → 새로운 개발자가 프로젝트에 참여할 때 더 쉽게 이해하고 적응할 수 있도록 도와줌

 

4. 배포 및 관리

    - 프로젝트 빌드 후 생성된 아티팩트를 배포하고 관리

    - 프로젝트 아티팩트를 로컬 레포지토리, 원격 레포지토리, 중앙 Maven 저장소와 같은 공개 저장소에 배포 가능

 

5. 유연성

    - 다양한 프로젝트 유형 및 요구 사항에 대응 가능

    - 다양한 플러그인과 확장 기능 제공 → 프로젝트 특정 기능 추가 가능

 

 

 

 Maven과 Gradle의 차이점

  Maven Gradle
구조 및 문법 ·  XML 사용 (pom.xml) · Groovy 또는 Kotlin DSL 사용 (build.gradle)
· 문법 더 간결
성능 · 직렬 처리 방식
· 의존성 해결 및 빌드 작업에서 중간 상태가 없음
· 병렬 및 증분 빌드
· 성능이 향상되고 더 빠른 빌드 가능
설정 · 제한된 플러그인과 라이프 사이클 제공
· 복잡한 설정 시 XML 구조가 복잡해 짐
· 플러그인 기반의 확장 가능한 구조 제공
· 더 유연하고 사용자 정의가 가능
유연성 · 일반적인 프로젝트 빌드를 위한 강력한 표준 제공 · 더 많은 유연성 제공
· 복잡한 빌드 시나리오를 다룰 수 있음

 

 

사용자 정의 빌드 스크립트 예시

- Maven (pom.xml)

 

<!-- pom.xml -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0.0</version>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

- Gradle (build.gradle)

 

// build.gradle
plugins {
    id 'java'
}

group 'com.example'
version '1.0.0'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'junit:junit:4.12'
}

 

 결론

    - 어떤 도구를 선택할지는 프로젝트의 요구 사항과 개발자의 선호도에 따라 결정

    - 일반적으로 Gradle이 더 유연하고 성능이 우수하며, 복잡한 프로젝트에 더 적합

    - Maven은 이미 많은 프로젝트에서 사용되고 있어, 간단한 프로젝트나 Maven 생태계와 호환성이 필요한 경우 Maven 선택이 합리적

반응형

댓글