post-image

Gradle vs Maven – Gradle có gì hay hơn Maven ?

Tổng quan

Gradle vs Maven nên sử dụng cái nào cho dự án Spring Boot của mình là câu hỏi của rất nhiều những bạn lập trình viên Java. Có người bảo rằng nên dùng Maven, có người thì lại bảo Gradle hay hơn. Vậy chúng ta nên sử dụng Gradle hay Maven cùng tìm câu trả lời ở bài đọc này nhé ^^

Maven là gì ?

  • Apache maven được ra đời vào năm 2004 là một chương trình quản lý dự án cho phép các lập trình viên có thể quản lý về version, các thư viện sử dụng trong dự án, quản lý build,…
  • Nó giúp chúng ta đơn giản hoá và chuẩn hoá quá trình xây dựng dự án và nó hoàn toàn free.

Gradle là gì ?

  • Gradle là một hệ thống tự động build mã nguồn mở dựa trên các khái niệm về Apache Ant và Apache Maven. Maven mình đã giới thiệu ở trên nên dưới đây mình sẽ giới thiệu qua về Ant.
  • Apache Ant được ra đời vào năm 2000 – là một trong những công cụ đóng gói hiện đại và nhanh chóng được sử dụng trong các dự án sử dụng ngôn ngữ Java. Ant cho phép nhà phát triển mô tả meta-data của dự án cũng như các hoạt động trong quá trình build bằng việc sử dụng cú pháp XML. Tuy nhiên những đoạn mã viết theo tiêu chuẩn của Ant quá dài và phức tạp.
  • Và sau này Gradle được ra đời, kết hợp các ưu điểm của Maven cũng như của Ant và thêm một số các cải thiện mới và sử dụng Groovy để giải quyết bài toán đóng gói.

Gradle vs Maven

  • Giữa Gradle vs Maven có một số điểm khác biệt cơ bản trong cách tiếp cận build một dự án. Gradle dựa vào đồ thị phụ thuộc task. Trong khi đó Maven thì lại dựa trên mô hình cố định và tuyến tính của các giai đoạn. Với Maven, các mục tiêu gắn liền với các giai đoạn của dự án và các mục tiêu có chức năng tương tự như các task của Gradle.
  • Xét về hiệu suất làm việc thì cả hai đều cho phép các build module được chạy song song. Tuy nhiên, Gradle cho phép tăng khả năng build vì nó kiểm tra tác vụ nào được cập nhật hay không nên thời gian build của Gradle sẽ nhanh hơn so với Maven.
  • Các tính năng khác biệt về mặt hiệu suất mà bạn có thể tìm thấy trên Gradle bao gồm:
    • Tăng khả năng complie cho các class Java
    • Sử dụng API cho việc tăng số lượng các task con
  • Còn về việc quản lý các dependency, cả Gradle và Maven đều có thể xử lý các dependency động và bắc cầu, để sử dụng bộ nhớ đệm dependency của bên thứ ba và đọc định dạng siêu dữ liệu POM. Bạn cũng có thể khai báo các phiên bản thư viện thông qua định nghĩa lập phiên bản trung tâm và thực thi lập phiên bản trung tâm. Cả hai đều tải xuống các dependency bắc cầu từ kho tạo tác của chúng. Maven có Maven Central trong khi Gradle có JCenter. Nếu có một số phụ thuộc được yêu cầu, Maven có thể tải chúng xuống đồng thời.
  • Các tính năng quản lý dependency khác mà chúng ta chỉ có thể tìm thấy trên Gradle là:
    • Việc sử dụng các quy tắc thay thế cho các thư viện tương thích
    • Việc sử dụng các quy tắc ReplacedBy
  • Ngoài ra việc tạo các Build Script của Gradle cũng đơn giản hơn so với Maven rất nhiều.
  • Cho nên Gradle sẽ là lựa chọn tốt hơn cho chúng ta so với Maven ^^

Ưu điểm của Gradle

Gradle có thể build cho nhiều ngôn ngữ

Gradle hỗ trợ build cho 60 ngôn ngữ lập trình khác nhau bao gồm Java, Scala, Python, C/C++,…

Ngoài ra Gradle còn được sử dụng trong:

  • Java + JVM
  • Android
  • C/C++
  • Objective-C/C++
  • JavaScript, CSS

Tích hợp các công cụ

Từ các IDE (Integrated Development Environment) đến các CI (Continuous Integration) hay các công cụ deploy, Gradle tích hợp với tất cả mọi thứ mà bạn có thể nghĩ đến

Quản lý dependecy vô cùng đơng giản và dễ sử dụng

repositories {
jcenter()
}
dependencies {
compile project(':api')
compile 'org.slf4j:slf4j-api:1.7.10'
compile 'com.google.guava:guava:18.0'
runtime 'org.slf4j:slf4j-simple:1.7.10'
testCompile('junit:junit:4.12') {
exclude group: 'org.hamcrest'
}
testCompile 'org.mockito:mockito-core:1.+'
}

Hỗ trợ build reporting

  • Phân tích build giúp thấy được những chỗ cần tối ưu hóa
  • Báo cáo cho phép hiểu sâu hơn hiệu quả của build tự động với các module và hiệu năng của nó

Kết luận

Cá nhân mình thấy mọi người nên sử dụng Gradle để build các dự án Spring Boot của mình vì nó khá là dễ sử dụng cũng như sau này nếu các bạn có sử dụng Android Studio cũng sẽ dễ tiếp cận hơn. Và Gradle sẽ phù hợp hơn với các dự án lớn trong khi đó Maven sẽ phù hợp với các dự án nhỏ.

Leave a Reply

Your email address will not be published.