Gradle là gì?

Gradle là 1 trong số những công cụ tự động hóa quy trình build và quản lý các thư viện, nhằm tối ưu hóa công đoạn biên dịch, đóng góp gói, dễ dàng hơn cho việc trở nên tân tiến phần mềm.

Bạn đang xem: Gradle là gì

Năm 2000, Apache Ant ra đời như là một trong những tool đóng góp gói văn minh và nhanh lẹ được sử dụng trong những dự án sử dụng ngôn ngữ Java. Ant được 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 thông qua bộ cú pháp XML. Tuy vậy những đoạn mã viết theo tiêu chuẩn của Ant quá dài cùng phức tạp.

Năm 2004, Apache Maven ra đời và chỉ dẫn các cải thiện so cùng với Ant. Bằng việc đưa ra một cấu trúc dự án tiêu chuẩn, Maven được cho phép nhà trở nên tân tiến sử dụng một trong những plugin của bản thân thay vì cần viết tổng thể các loại code mô tả quy trình đóng gói. Dường như Maven còn cho phép tải về các thư viện nhờ vào thông qua internet, điều này giúp cho việc chia sẻ cũng như làm chủ phiên bản trở nên dễ dàng hơn. Đổi lại, nhà phát triển sẽ mất tương đối nhiều sức lực lao động để tùy chỉnh cấu hình nếu cấu trúc dự án lúc này không tuân theo Maven Standard Directory Layout. Và bài toán vẫn thực hiện XML tạo cho file POM (Project Object Model) trở buộc phải dài chiếc và phức tạp để nắm bắt logic.

Năm 2012, Gradle release version 1.0 phối kết hợp các điểm mạnh của Ant và Maven đồng thời cung ứng các nâng cấp mới với sử dụng Groovy trong việc giải quyết và xử lý bài toán đóng gói.

1. Các ưu thế của Gradle

1.1 Build cho những ngôn ngữ

Gradle cung ứng build cho 60 ngôn ngữ lập trình khác nhau bao gồm Java, Scala, Python, C/C++, Android, iOS.

Java + JVM languages

Được thiết kế để chạy trên JVM, Gradle cung cấp mạnh mẽ cho những dự án viết bằng Java và những ngôn ngữ JVM khác ví như Scala, Groovy,… với việc hỗ trợ nhiều loại áp dụng và công cụ cải cách và phát triển thiết yếu ớt như test frameworks (JUnit, TestNG, Spock), application frameworks (Java EE, Grails, Play!), embedded web servers (Jetty) & code analysis cops (Checkstyle, CodeNarc, FindBugs, JDepend, PMD, JaCoCo, Sonar).

Android’s build system

Tích phù hợp với Android Studio hỗ trợ cai quản dependency, multi-project. Đồng thời tích hợp các test services phổ cập như AppThwack, TestDroid và Manymo. Bên cạnh ra, hoàn toàn có thể tạo các APK từ 1 module và upload chúng lên Google Play và các app store không giống với những phiên phiên bản khác nhau (free, paid,…)

C/C++, Objective-C/C++, Assembly, CUnit

Hỗ trợ compiler, assembler và linker; có thể chấp nhận được phân phối các thư viện, file thực thi với rất nhiều loại (debug, release), platforms (x86, x86_64), phiên bản (community, enterprise) khác nhau. Tích hòa hợp GCC, CLANG, XCODE, VISUAL C++ …

JavaScript, CSS với web tests

Hỗ trợ những frontend task: consolidate, minify, compress, code quality, compile, source maps.

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

Từ những IDE (Integrated Development Environment) đến các CI (Continuous Integration) hay các công vậy deploy, Gradle tích hợp với tất cả hầu hết thứ mà chúng ta có thể nghĩ đến. Xem thêm danh sách các tool có thể tích hơp: https://gradle.org/why/integrates-with-everything/

1.3 quản lý dependency táo tợn mẽĐịnh nghĩa solo giản

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.+"
Có thể thừa nhận từ ngẫu nhiên repository nào theo luồng thông tin có sẵn đếntừ public giỏi private mang đến local; xáo trộn và phối hợp các loại repository

Maven repositoriespublic (Maven Central, jCenter)third-party và in-house (Bintray, Artifactory)local Maven repositoryIvy repositoriesCustom & legacy repositoriesFlat filesGiải pháp dependency tối ưuKhông lúc nào tải 1 artifact các lầnCacheXác minh qua checksumTrack bắt đầu dependency bảo vệ tính thích hợp lệ và ngăn ngừa lỗi…Giải quyết xung đột.

Cho phép publish Artifacts lên Ivy hay Maven repositories.

1.4 Fully Programmable builds

Cho phép điều hành và kiểm soát và điều chỉnh giới hạn max để Gradle phù hợp với yêu cầu sử dụng.

1.5 cùng với Enterprise Build Automation thì Gradle nhanh nhấtincremental buildbuild cachingparallelization drive1.6 cung ứng build reportingPhân tích build giúp xem được hồ hết chỗ cần tối ưu hóaBáo cáo có thể chấp nhận được hiểu sâu hơn kết quả của build auto với các module cùng hiệu năng của nó

2. đối chiếu với Maven

Dưới đó là 1 số tính năng rất nổi bật khi so sánh với Maven. Có thể tham khảo cụ thể thêm tại: Gradle vs Maven Feature Comparison

Build script viết bởi Gradle ngắn gọn cùng trực quan dễ nhìn đọc hơn

*

Thời gian build của gradle cấp tốc hơnMavenquá trình build diễn ra lâu do quy trình clean toàn thể các artifact và tiếp nối là quy trình đóng gói lại tự đầu.các đoạn Unit kiểm tra cũng tiêu tốn khá nhiều thời gianGradlemột task build đa số được định nghĩa input với output, nên lúc có sự nỗ lực đổi bé dại trong source code, Gradle đang chỉ thực hiện build lại 1 phần cần thiếtGradle đang tự kiếm tìm kiếm những task khác chịu ảnh hưởng task này với thực hiện quy trình build lạiGradle có thể chấp nhận được chạy parallel các đoạn code test nhờ đó rút ngắn thời gian của quá trình buildNgoài ra Gradle cho phép thực hiện việc phân phối những đoạn code test trải qua nhiều machine khác biệt để giảm thiểu thời gian chờ đợi

Và khi chạm mặt lỗi, sẽ không phải chờ đón quá lâu nhằm build và gặp lỗi, sửa lỗi và build lại

Mavendừng quy trình build ngay khi gặp mặt lỗiGradlethực thi hết toàn bộ các task bao gồm thểtổng hợp toàn thể các lỗi gặp mặt phải trong một lần đóng góp góiGradle tương hợp với Ant, Maven

Cho phép đơn vị phát triển ứng dụng không tốn quá nhiều sức lực lao động khi ko phải biến đổi toàn bộ để sử dụng Gradle.

*

Cộng đồng cách tân và phát triển sử dụng gradle tăng một cách mạnh dạn mẽ một trong những năm vừa mới đây đã góp sức đáng nhắc trong câu hỏi giúp Gradle thường xuyên có thêm các nâng cao mới.

3. Sản xuất Build Script cơ bản

Dưới đây là build script đơn giản và dễ dàng giúp sinh sản file jar với upload lên vps test.

Xem thêm: Đánh Giá User Agent Stylesheet Là Gì, User Agent Stylesheet Là Gì


configurations sshAntTaskdependencies sshAntTask "org.apache.ant:ant-jsch:1.9.2"# Task chế tạo file jarjar baseName "xxx" # Tên file doFirst zip64 = true # Zip type exclude "META-INF/*.RSA", "META-INF/*SF", "META-INF/*.DSA" # Main class manifest attributes "Main-Class" : xxx # Tập hợp những dependency phụ thuộc vào from configuration.compile.collect it.isDirectory() ? it : zipTree(it) ant.taskdef name: "scp" classname: "org.apache.tools.ant.taskdefs.optional.ssh.Scp", classpath: configurations.sshAntTask.asPath# Task copy tệp tin jar tới hệ thống test# bằng cách sử dụng ssh scptask scpJar() { doLast { file: file("xxx"), # Path file phải copy trust: true, todir: "user
Kết phù hợp với IDE, lấy một ví dụ với IntelliJ > Run > Edit Configurations để rất có thể nhanh chóng triển khai các task trên với cùng một vài phím tắt.