스펙상 gradle이 더 좋긴 한건 사실
jvm
이나 was
가 인식
할 수 있도록 패키징
해주는 빌드 과정
을 도와주는 도구생성
, 테스트 빌드
, 배포
등의 작업을 위한 전용 프로그램외부 라이브러리
와 로컬 레포지토리
에서도 라이브버리 별로 버전 관리를 해야할 때 용이pom.xml
파일에 명시(.m2)
고정적
이고 선형적인 단계
모델을 기반으로 한다.<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
<artifactId>maventTest</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
groovy 언어
를 사용한 Domain-specific-language를 사용한다. (설정파일을 xml파일을 사용하는 Maven보다 코드가 훨씬 간결)어느 task
가 업데이트
되었는지 체크하기 때문에, 빌드에 점진적으로 추가
할 수 있다.이미 반영된 빌드의 부분
은 더이상 재 실행되지 않는다.
(따라서 빌드 시간이 훨씬 단축될 수 있다!)그래프 기반
이다.plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
// https://mvnrepository.com/artifact/com.google.code.gson/gson
implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.1'
}
test {
useJUnitPlatform()
}
nexus 설정
그리고 build/jar 시 manifest 설정 등이
추가 되면 가독성의 큰 차이점
을 느낄 수 있다.gradle 측 공식 문서에는 비교문서가 존재
한다. (자신있는 모습)그래프
를 기반으로하는 반면 Maven은 고정적이고 선형적
인 단계의 모델을 기반다중 모듈 빌드
를 병렬로 실행
할 수 있지만, Gradle은 어떤 task가 업데이트되었고 안되었는지를 체크하기 때문에 incremental build를 허용이미 업데이트
된 테스크에 대해서는 작업이 실행되지 않으므로 빌드 시간이 훨씬 단축된다. 커지면 커질수록
, 빌드시간의 차이도 Maven과 비교하여 꽤 격차가 벌어진다.
- Gradle은 테스트를 실행할 때 1.7배 더 빠르고 빌드 캐시를 사용할 때 최대 30배 더 빠르게 빌드한다.
다른 모듈에서 사용하려면 상속
을 받아야 하지만 gradle 은 설정 주입 방식을 제공
한다.concurrent에 안전한 캐시를 허용
📌 여담
📚 참고
잘보고 갑니다 (__)