안녕하세요.
고코더 입니다.
오늘은 스프링부트 프로젝트에서 왜 Gradle을 사용해야 하는지 그 이유를 간단히 살펴보려고 합니다.
오랜 친구 Maven
메이븐은 2004년 출시된 ant의 대안으로 만들어진 아파치의 프로젝트 관리 도구입니다. 그동안 익숙하게 써왔던 pom.xml 파일을 이용하여 라이브러리를 관리할 수 있었던 빌드 도구입니다. 기존 ant를 발전시켜서 개발자에게 편리함을 제공하고 있는 고맙고 오래된 도구입니다.
새로운 스타 Gradle
하지만 세상은 변했고 메이븐의 장점은 모으고 단점은 보완한 새로운 빌드 도구가 2012년 탄생합니다. 바로 Gradle입니다. Groovy 언어를 사용하여 "Domain-specific-language"를 사용합니다. 덕분에 기존의 pom.xml파일을 사용하는 Maven보다 코드가 훨씬 간결하고 보기가 좋습니다.
Gradle을 사용해야 하는 이유
빌드 시간이 빠르다.
Gradle은 증분 빌드(incremental build)를 사용합니다. 즉 이미 업데이트된 작업에 대해서는 실행하지 않고 필요한 작업 문 실행하여 빌드 시간을 단축하였습니다. 다시 설명하면 모든 항목이 최신 상태인 경우 빌드를 건너뜁니다. 최신 항목을 건너뛰는 것만으로도 빌드 시간은 크게 단축됩니다.
concurrent 캐시 사용
예를 들면 A 프로젝트와 B 프로젝트가 동일한 캐시를 사용하는 경우, 서로 중복되지 않게 캐시를 관리합니다. 두 빌드 시스템 모두 구성 가능한 리포지토리의 종속성을 해결할 수 있는 내장 기능을 제공합니다. 종속성을 로컬로 캐시 하여 병렬 처리가 가능합니다.
IDE와 협업
Gradle팀은 강력한 IDE 팀들과 협업을 하였습니다. 그 덕분에 인텔리제이와 같은 개발도구에서 각종 IDE 자원을 지원받게 되었습니다. 개발자 입장에서 IDE와 협업된 툴은 개발 시간을 단축할 수 있습니다. 그리고 개발이 편안합니다.
단축된 코드량
말이 필요 없습니다. 그저 샘플 코드로 확인해보시길 바랍니다. 첫 번째는 메이븐입니다. 사용했을 때는 길다 생각이 안됐는데 정말 기네요..
<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'
}
진짜 이유
그리고 진짜 스프링부트에서 Gradle을 사용해야 하는 이유는 그렇게 실무에서 모두 사용하고 있기 때문입니다.
* 참조자료
'IT_Developers > JAVA' 카테고리의 다른 글
Spring Boot - 서버 포트 변경하기 / application.properties (0) | 2021.11.29 |
---|---|
JAVA - might not have been initialized 오류 해결법 (0) | 2021.11.24 |
Eclipse - "Build path specifies execution environmen" 이클립스 오류 (0) | 2021.11.16 |
이클립스에서 Gradle dependencies 다시 갱신하기 / refresh gradle project (0) | 2021.11.16 |
java.net.SocketException : Connection reset 에러 (0) | 2021.11.15 |
댓글