Spring[Info] - Maven VS Gradle

2021. 7. 2. 14:14Spring/Spring[Info]

반응형

🤔 빌드 관리 도구?

  • 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램
  • 초기의 java 빌드도구로 Ant를 많이 사용하였으나 최근 많은 빌드도구들이 생겨 Maven이 많이 쓰였고, 현재는 Gradle이 많이 쓰인다.

Maven 장점 및 특징

  • 자바 전용 프로젝트 라이프사이클 관리 목적 빌드 도구이며 Ant 불편함을 해결하고자 만들었다.
  • pom.xml을 이용한 정형화된 빌드 시스템(필요한 라이브러리를 정의하면 알아서 다운받아줌)
  • 간단한 설정을 통한 배포 관리가 가능 하다.

Gradle 장점 및 특징

  • Maven 과 Ant 의 장점을 조합하여 만든 빌드 도구이다.
  • build.gradle을 이용한 정형화된 빌드 시스템이다.
  • 멀티 프로젝트에 용이하다.
  • Gradle은 프로젝트의 어느 부분이 업데이트되었는지 알기 때문에, 빌드에 점진적으로 추가할 수 있다. (업데이트가 이미 반영된 빌드의 부분은 더이상 재실행되지 않는다.)

Maven VS Gradle

  • Gradle은 작업 의존성 그래프를 기반 Maven은 고정적이고 선형적인 단계의 모델을 기반
  • 성능 측면에서 Gradle은 어떤 task의 상태를 체크하기 때문에 incremental build를 허용
  • 이미 업데이트된 테스트에 대해서는 작업이 실행되지 않으므로 빌드 시간이 훨씬 단축

Maven과 Gradle 코드 차이

Maven 코드

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.12.1</version>
    <executions>
        <execution>
            <configuration>
                <configLocation>config/checkstyle/checkstyle.xml</configLocation>
                <consoleOutput>true</consoleOutput>
                <failsOnError>true</failsOnError>
            </configuration>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>2.5.4</version>
    <executions>
        <execution>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>3.1</version>
    <executions>
        <execution>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

 

Gradle 코드

apply plugin:'java'
apply plugin:'checkstyle'
apply plugin:'findbugs'
apply plugin:'pmd'
version ='1.0'
repositories {
    mavenCentral()
}
dependencies {
    testCompile group:'junit', name:'junit', version:'4.11'
}

Reference

[Spring] 빌드 관리 도구 Maven과 Gradle 비교하기.

반응형