maven vs gradle

Jinny·2021년 6월 21일
0

Web

목록 보기
2/3

빌드 관리 도구?

  • 개발 시 일반적으로 개발에 필요한 다양한 외부 라이브러리들을 다운로드하고, 이 라이브러리들을 사용하면서 개발을 하는데, 이때 각 라이브러리들을 모두 다운받을 필요 없이 빌드 도구 설정파일에 필요한 라이브러리와 버전들, 종속성 정보를 명시하여 필요한 라이브러리들을 설정파일을 통해 자동으로 다운로드 해주고 이를 간편히 관리해주는 도구임!

maven

  • 자바용 프로젝트 관리 도구로, 아파치에서 Ant 대안으로 만들어졌다고 함. 아파치 라이선스로 배포되는 오픈 소스 소프트웨어.

  • 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml에 명시하면, maven은 외부 저장소에서 필요한 라이브러리와 플러그인들을 다운로드 해서 로컬시스템의 캐시에 모두 저장한다.

  • 특징적인 것은 우리가 사용하려고 명시한 라이브러리들과 연관된 라이브러리들까지 연동되어서 관리가 된다!(네트워크를 통해서 연관된 라이브러리까지 업데이트 해줌)

  • 예를 들어 "Spring Boot Data JPA Starter" 모듈을 사용하고 싶을때 메이븐 레포지토리에서 해당 모듈을 검색하여 xml 설정파일에 추가하여 사용할 수 있음.

    <!-- https:*//mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa --> 
    <dependency>   
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>2.2.4.RELEASE</version>
    </dependency>

gradle

  • 2007년에 처음 개발되었고, 2013년에 구글에 의해 안드로이드 프로젝트의 빌드 시스템으로 채택되었다

    -> 안드로이드 스튜디오의 공식 빌드 시스템

  • Groovy 언어를 사용한 빌드 자동화 시스템으로, Groovy와 유사한 도메인 언어 Domain-specific-language를 사용한다. -> xml 파일을 사용하는 maven보다 코드가 훨씬 간결함(Java와 거의 비슷한 코드를 써서 빌드 처리를 관리 할 수 있다.)

    • Groovy는 Java 가상 머신에서 실행되는 스크립트 언어이다. Java와 마찬가지로 소스 코드를 작성하고 Java 가상 머신에서 동작하지만, Java와 달리 소스 코드를 컴파일을 할 필요는 없다. 또한 Java와 호환되고, Java 클래스 파일을 그대로 Groovy 클래스로 사용할 수 있다.
  • 꽤 큰규모로 예상되는 multi-project 빌드를 도울 수 있도록 디자인되었다.

  • Gradle은 프로젝트의 어떤 task가 업데이트 되었고 안되었는지를 체크함. -> 빌드에 점진적으로 추가할 수 있다.

    -> 업데이트가 이미 반영된 빌드의 부분은 즉 더이상 재실행되지 않는다. 따라서 빌드 시간이 훨씬 단축될 수 있다

maven vs Gradle

  • 아직까지는 Maven의 점유율이 더 높지만, Gradle이 조금 더 빠른 성능과 간결한 설정이 가능해서 인기가 많아지고 있음. 소규모 프로젝트에서는 큰 차이가 없어서 익숙한 maven을 사용하더라도, 규모가 커질수록 gradle을 사용하는 것이 더 유리하다고 함!!

  • maven 은 프로젝트가 커질수록 빌드 스크립트의 내용이 길어지고 가독성이 떨어지는 반면, gradle 은 훨씬 적은 양의 스크립트로 짧고 간결하게 작성할 수 있다.

    maven 의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야 하지만 gradle 은 설정 주입 방식으로 이를 해결한다.

  • 또한 Gradle은 concurrent에 안전한 캐시를 허용한다.

-> 2개 이상의 프로젝트에서 동일한 캐시를 사용할 경우, 서로 overwrite되지 않도록 checksum 기반의 캐시를 사용하고, 캐시를 repository와 동기화시킬 수 있다.

출처: https://jisooo.tistory.com/

https://jisooo.tistory.com/entry/Spring-%EB%B9%8C%EB%93%9C-%EA%B4%80%EB%A6%AC-%EB%8F%84%EA%B5%AC-Maven%EA%B3%BC-Gradle-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0

https://okky.tistory.com/179

profile
삐약 응애

0개의 댓글