Spring[Info] - Maven VS Gradle
2021. 7. 2. 14:14ㆍSpring/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
반응형