Gradle - Hướng dẫn nhanh

"Gradle is an open source build automation system"

Ant và Maven đã chia sẻ thành công đáng kể trên thị trường JAVA. Ant là công cụ xây dựng đầu tiên được phát hành vào năm 2000 và nó được phát triển dựa trên ý tưởng lập trình thủ tục. Sau đó, nó được cải tiến với khả năng chấp nhận các plug-in và quản lý phụ thuộc qua mạng với sự trợ giúp của Apache-IVY. Hạn chế chính là XML là một định dạng để viết các kịch bản xây dựng, phân cấp không tốt cho lập trình thủ tục và XML có xu hướng trở nên lớn không thể quản lý được.

Maven được giới thiệu vào năm 2004. Nó đi kèm với rất nhiều cải tiến sau đó là ANT. Nó thay đổi cấu trúc và tiếp tục sử dụng XML để viết các đặc tả xây dựng. Maven dựa vào các quy ước và có thể tải xuống các phần phụ thuộc qua mạng. Những lợi ích chính của maven là vòng đời của nó. Trong khi theo cùng một vòng đời cho nhiều dự án liên tục. Điều này đi kèm với chi phí linh hoạt. Maven cũng gặp một số vấn đề trong việc quản lý sự phụ thuộc. Nó không xử lý tốt các xung đột giữa các phiên bản của cùng một thư viện và các tập lệnh xây dựng tùy chỉnh phức tạp thực sự khó viết bằng maven hơn trong ANT.

Cuối cùng thì Gradle cũng thành hình vào năm 2012. Gradle mang một số tính năng hiệu quả từ cả hai công cụ.

Các tính năng của Gradle

Sau đây là danh sách các tính năng mà Gradle cung cấp.

  • Declarative builds and build-by-convention- Gradle có sẵn với Ngôn ngữ dành riêng cho miền (DSL) riêng biệt dựa trên ngôn ngữ Groovy. Gradle cung cấp một phần tử ngôn ngữ khai báo. Các phần tử đó cũng cung cấp hỗ trợ xây dựng theo quy ước cho Java, Groovy, OSGI, Web và Scala.

  • Language for dependency based programming - Ngôn ngữ khai báo nằm trên đầu biểu đồ nhiệm vụ mục đích chung, mà bạn hoàn toàn có thể tận dụng trong quá trình xây dựng của mình.

  • Structure your build- Gradle cuối cùng cho phép bạn áp dụng các nguyên tắc thiết kế chung cho công trình của mình. Nó sẽ cung cấp cho bạn một cấu trúc hoàn hảo để xây dựng, VẬY bạn có thể thiết kế cấu trúc tốt và dễ dàng bảo trì, dễ hiểu.

  • Deep API - Sử dụng API này, nó cho phép bạn theo dõi và tùy chỉnh cấu hình và hành vi thực thi của nó đối với cốt lõi của nó.

  • Gradle scales - Gradle có thể dễ dàng tăng năng suất của họ, từ các bản xây dựng dự án đơn giản và đơn lẻ đến các bản xây dựng đa dự án cho doanh nghiệp khổng lồ.

  • Multi-project builds- Gradle hỗ trợ các bản dựng đa dự án và nó hỗ trợ các bản dựng từng phần. Nếu bạn xây dựng một tiểu dự án, Gradle sẽ chăm sóc xây dựng tất cả các tiểu dự án mà nó phụ thuộc vào.

  • Different ways to manage your builds - Gradle hỗ trợ các chiến lược khác nhau để quản lý sự phụ thuộc của bạn.

  • Gradle is the first build integration tool- Gradle hỗ trợ đầy đủ cho các nhiệm vụ ANT của bạn, cơ sở hạ tầng kho lưu trữ Maven và lvy để xuất bản và truy xuất các phụ thuộc. Gradle cũng cung cấp một công cụ chuyển đổi để chuyển tập lệnh Maven pom.xml sang Gradle.

  • Ease of migration- Gradle có thể dễ dàng thích ứng với bất kỳ cấu trúc nào bạn có. Do đó, bạn luôn có thể phát triển bản dựng Gradle của mình trong cùng một nhánh nơi bạn có thể tạo tập lệnh trực tiếp.

  • Gradle Wrapper- Gradle Wrapper cho phép bạn thực thi các bản dựng Gradle trên các máy chưa cài đặt Gradle. Điều này rất hữu ích cho việc tích hợp liên tục các máy chủ.

  • Free open source - Gradle là một dự án mã nguồn mở và được cấp phép theo Giấy phép Phần mềm Apache (ASL).

  • Groovy- Kịch bản xây dựng của Gradle được viết bằng Groovy. Toàn bộ thiết kế của Gradle được định hướng sử dụng như một ngôn ngữ chứ không phải là một khuôn khổ cứng nhắc. Và Groovy cho phép bạn viết script của riêng mình với một số điều trừu tượng. Toàn bộ API Gradle được thiết kế hoàn toàn bằng ngôn ngữ Groovy.

Tại sao Groovy?

API Gradle hoàn chỉnh được thiết kế bằng ngôn ngữ Groovy. Đây là một lợi thế của DSL nội bộ so với XML. Gradle là công cụ xây dựng mục đích chung ở cốt lõi của nó; trọng tâm chính của nó là các dự án Java. Trong những dự án như vậy, các thành viên trong nhóm sẽ rất quen thuộc với Java và tốt hơn hết là một bản dựng nên càng minh bạch càng tốt cho tất cả các thành viên trong nhóm.

Các ngôn ngữ như Python, Groovy hoặc Ruby tốt hơn cho xây dựng khung công tác. Tại sao Groovy được chọn là vì nó mang lại sự minh bạch lớn nhất cho những người sử dụng Java. Cú pháp cơ bản của Groovy giống như Java. Groovy cung cấp nhiều hơn thế nữa.

Gradle là một công cụ xây dựng được xây dựng dựa trên java. Có một số điều kiện tiên quyết cần được cài đặt trước khi cài đặt công việc khung Gradle.

Điều kiện tiên quyết

JDK và Groovy là điều kiện tiên quyết để cài đặt Gradle.

  • Gradle yêu cầu JDK phiên bản 6 trở lên được cài đặt trong hệ thống của bạn. Nó sử dụng các thư viện JDK được cài đặt và đặt thành biến môi trường JAVA_HOME.

  • Gradle mang thư viện Groovy của riêng nó, do đó, chúng ta không cần cài đặt Groovy một cách rõ ràng. Nếu nó được cài đặt, Gradle sẽ bỏ qua.

Sau đây là các bước để cài đặt Gradle trong hệ thống của bạn.

Bước 1 - Xác minh cài đặt JAVA

Trước hết, bạn cần cài đặt Bộ phát triển phần mềm Java (SDK) trên hệ thống của mình. Để xác minh điều này, hãy thực thiJava –version lệnh trong bất kỳ nền tảng nào bạn đang làm việc.

Trong Windows -

Thực hiện lệnh sau để xác minh cài đặt Java. Tôi đã cài đặt JDK 1.8 trong hệ thống của mình.

C:\> java -version

Đầu ra -

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)

Trong Linux -

Thực hiện lệnh sau để xác minh cài đặt Java. Tôi đã cài đặt JDK 1.8 trong hệ thống của mình.

$ java - version

Đầu ra -

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)

Chúng tôi giả định rằng người đọc của hướng dẫn này đã cài đặt Java SDK phiên bản 1.8.0_66 trên hệ thống của họ.

Bước 2 - Tải xuống tệp bản dựng Gradle

Tải xuống phiên bản mới nhất của Gradle từ liên kết Tải xuống Gradle . Trong trang tham chiếu, nhấp vàoComplete Distributionliên kết. Bước này là phổ biến cho bất kỳ nền tảng nào. Đối với điều này, bạn sẽ nhận được tệp phân phối hoàn chỉnh vào thư mục Tải xuống của bạn.

Bước 3 - Thiết lập môi trường cho Gradle

Thiết lập môi trường có nghĩa là chúng ta phải giải nén tệp phân phối, sao chép tệp thư viện vào vị trí thích hợp. Đang cài đặtGRADLE_HOMEPATH các biến môi trường.

Bước này phụ thuộc vào nền tảng.

Trong Windows -

Giải nén tệp zip đã tải xuống có tên gradle-2.11-all.zip và sao chép các tệp phân phối từ Downloads\gradle-2.11\ đến C:\gradle\ vị trí.

Sau đó thêm C:\gradleC:\gradle\bin thư mục đến GRADLE_HOMEPATHbiến hệ thống. Làm theo hướng dẫn đã cho đó làright click on my computers -> click on properties -> advanced system settings -> click on environmental variables. Ở đó, bạn sẽ tìm thấy một hộp thoại để tạo và chỉnh sửa các biến hệ thống. Nhấp vào nút mới để tạo biến GRADLE_HOME (theo ảnh chụp màn hình bên trái). Nhấp vào Chỉnh sửa để chỉnh sửa biến hệ thống Đường dẫn hiện có (theo ảnh chụp màn hình bên phải). Thực hiện theo các ảnh chụp màn hình dưới đây.

Trong Linux -

Giải nén tệp zip đã tải xuống có tên gradle-2.11-all.zip sau đó bạn sẽ tìm thấy một tệp được trích xuất có tên gradle-2.11.

Bạn có thể sử dụng cách sau để di chuyển các tệp phân phối từ Downloads/gradle-2.11/ đến /opt/gradle/vị trí. Thực hiện thao tác này từ thư mục Tải xuống.

$ sudo mv gradle-2.11 /opt/gradle

Chỉnh sửa tệp ~ / .bashrc và dán nội dung sau vào đó và lưu nó.

export ORIENT_HOME = /opt/gradle
export PATH = $PATH:

Thực thi lệnh sau để thực thi ~/.bashrc tập tin.

$ source ~/.bashrc

Bước 4: Xác minh cài đặt Gradle

Trong cửa sổ:

Bạn có thể thực hiện lệnh sau trong dấu nhắc lệnh.

C:\> gradle –v

Đầu ra: ở đó bạn sẽ tìm thấy phiên bản Gradle.

------------------------------------------------------------
Gradle 2.11
------------------------------------------------------------

Build time: 2016-02-08 07:59:16 UTC
Build number: none
Revision: 584db1c7c90bdd1de1d1c4c51271c665bfcba978
Groovy: 2.4.4

Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_60 (Oracle Corporation 24.60-b09)
OS: Windows 8.1 6.3 amd64

Trong Linux:

Bạn có thể thực hiện lệnh sau trong terminal.

$ gradle –v

Đầu ra: ở đó bạn sẽ tìm thấy phiên bản Gradle.

------------------------------------------------------------
Gradle 2.11
------------------------------------------------------------

Build time: 2016-02-08 07:59:16 UTC
Build number: none
Revision: 584db1c7c90bdd1de1d1c4c51271c665bfcba978

Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_60 (Oracle Corporation 24.60-b09)
OS: Linux 3.13.0-74-generic amd64

Gradle xây dựng một tệp kịch bản để xử lý hai thứ; một làprojects và một cái khác là tasks. Mỗi bản dựng Gradle đại diện cho một hoặc nhiều dự án. Một dự án đại diện cho một thư viện JAR hoặc một ứng dụng web hoặc nó có thể đại diện cho một ZIP được tập hợp từ các JAR do các dự án khác tạo ra. Nói một cách dễ hiểu, một dự án được tạo thành từ các nhiệm vụ khác nhau. Một nhiệm vụ có nghĩa là một phần công việc mà một bản dựng thực hiện. Một nhiệm vụ có thể là biên dịch một số lớp, tạo JAR, tạo Javadoc hoặc xuất bản một số tệp lưu trữ vào kho lưu trữ.

Gradle sử dụng Groovy language để viết kịch bản.

Viết kịch bản xây dựng

Gradle cung cấp Ngôn ngữ dành riêng cho miền (DSL) để mô tả các bản dựng. Điều này sử dụng ngôn ngữ Groovy để mô tả một công trình dễ dàng hơn. Mỗi tập lệnh xây dựng của Gradle được mã hóa bằng UTF-8, được lưu ngoại tuyến và được đặt tên là build.gradle.

build.gradle

Chúng tôi đang mô tả về các nhiệm vụ và dự án bằng cách sử dụng tập lệnh Groovy. Bạn có thể chạy bản dựng Gradle bằng lệnh Gradle. Lệnh này tìm kiếm một tệp có tênbuild.gradle. Hãy xem ví dụ sau đại diện cho một tập lệnh nhỏ được intutorialspoint. Sao chép và lưu tập lệnh sau vào một tệp có tênbuild.gradle. Tập lệnh xây dựng này xác định tên tác vụ hello, được sử dụng để in chuỗi điểm hướng dẫn.

task hello {
   doLast {
      println 'tutorialspoint'
   }
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh trên. Bạn nên thực thi điều này, nơi tệp build.gradle được lưu trữ.

C:\> gradle –q hello

Đầu ra:

tutorialspoint

Nếu bạn nghĩ rằng nhiệm vụ hoạt động tương tự như mục tiêu của ANT, thì đúng vậy - nhiệm vụ Gradle tương đương với mục tiêu ANT.

Bạn có thể đơn giản hóa tác vụ xin chào này bằng cách chỉ định một phím tắt (đại diện cho một biểu tượng <<) đến doLasttuyên bố. Nếu bạn thêm phím tắt này vào tác vụ trênhello nó sẽ giống như tập lệnh sau.

task hello << {
   println 'tutorialspoint'
}

Tương tự như trên, bạn có thể thực thi tập lệnh trên bằng cách sử dụng gradle –q hello chỉ huy.

Tập lệnh lớp chủ yếu sử dụng hai Đối tượng thực, một là Đối tượng Dự án và một đối tượng khác là Đối tượng Tập lệnh.

Project Object- Mỗi kịch bản mô tả về một hoặc nhiều dự án. Trong khi thực thi, tập lệnh này cấu hình Đối tượng Dự án. Bạn có thể gọi một số phương thức và sử dụng thuộc tính trong tập lệnh xây dựng của bạn được ủy quyền cho Đối tượng dự án.

Script Object- Gradle đưa mã tập lệnh vào các lớp thực hiện Giao diện Tập lệnh và sau đó thực thi. Điều này có nghĩa là tất cả các thuộc tính và phương thức được khai báo bởi giao diện tập lệnh đều có sẵn trong tập lệnh của bạn.

Bảng sau xác định danh sách standard project properties. Tất cả các thuộc tính này đều có sẵn trong tập lệnh xây dựng của bạn.

Sơ không. Tên Kiểu Giá trị mặc định
1 dự án Dự án Phiên bản dự án
2 Tên Chuỗi Tên của thư mục dự án.
3 con đường Chuỗi Đường dẫn tuyệt đối của dự án.
4 sự miêu tả Chuỗi Mô tả cho dự án.
5 projectDir Tập tin Thư mục chứa tập lệnh xây dựng.
6 buildDir Tập tin projectDir / xây dựng
7 nhóm Vật Không xác định
số 8 phiên bản Vật Không xác định
9 con kiến AntBuilder Một phiên bản AntBuilder

Kiến thức cơ bản về Groovy

Các tập lệnh xây dựng Gradle sử dụng API Groovy có độ dài đầy đủ. Là một công ty khởi nghiệp, hãy xem các ví dụ sau.

Ví dụ sau giải thích về việc chuyển đổi một chuỗi thành chữ hoa.

Sao chép và lưu đoạn mã dưới đây vào build.gradle tập tin.

task upper << {
   String expString = 'TUTORIALS point'
   println "Original: " + expString
   println "Upper case: " + expString.toUpperCase()
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi tệp build.gradle được lưu trữ.

C:\> gradle –q upper

Đầu ra:

Original: TUTORIALS point
Upper case: TUTORIALS POINT

Ví dụ sau giải thích về việc in giá trị của một tham số ngầm định ($ it) trong 4 lần.

Sao chép và lưu mã sau vào build.gradle tập tin.

task count << {
   4.times { 
      print "$it " 
   }
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi tệp build.gradle được lưu trữ.

$ gradle –q count

Đầu ra:

0 1 2 3

Ngôn ngữ Groovy cung cấp rất nhiều tính năng trong đó một số tính năng quan trọng được thảo luận dưới đây.

Phương pháp Groovy JDK

Groovy bổ sung rất nhiều phương thức hữu ích cho các lớp Java tiêu chuẩn. Ví dụ, API có thể lặp lại từ JDK triển khai mộteach() phương thức lặp qua các phần tử của Giao diện có thể lặp lại.

Sao chép và lưu mã sau vào build.gradle tập tin.

task groovyJDK << {
   String myName = "Marc";
   myName.each() { 
      println "${it}" 
   };
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi lưu trữ tệp build.gradle.

C:\> gradle –q groovyJDK

Đầu ra:

M
a
r
c

Người tiếp cận tài sản

Bạn có thể tự động truy cập các phương thức getter và setter thích hợp của một thuộc tính cụ thể bằng cách chỉ định tham chiếu của nó.

Đoạn mã sau xác định cú pháp của các phương thức getter và setter của một thuộc tính buildDir.

// Using a getter method
println project.buildDir
println getProject().getBuildDir()

// Using a setter method
project.buildDir = 'target'
getProject().setBuildDir('target')

Dấu ngoặc đơn tùy chọn trên lệnh gọi phương thức

Groovy có một tính năng đặc biệt trong việc gọi các phương thức là dấu ngoặc đơn là tùy chọn cho việc gọi phương thức. Tính năng này cũng áp dụng cho tập lệnh Gradle.

Hãy xem cú pháp sau. Điều đó xác định một phương thức gọisystemProperty của test vật.

test.systemProperty 'some.prop', 'value'
test.systemProperty('some.prop', 'value')

Đóng lại như là tham số cuối cùng của phương pháp

Gradle DSL sử dụng bao đóng ở nhiều nơi. Trong đó tham số cuối cùng của một phương thức là một bao đóng, bạn có thể đặt bao đóng sau khi gọi phương thức.

Đoạn mã sau định nghĩa các cú pháp mà Closures sử dụng làm tham số phương thức repositories ().

repositories {
   println "in a closure"
}
repositories() { 
   println "in a closure" 
}
repositories({ println "in a closure" })

Nhập mặc định

Gradle tự động thêm một tập hợp các câu lệnh nhập vào các tập lệnh Gradle. Danh sách sau đây hiển thị cho bạn các gói nhập mặc định vào tập lệnh Gradle.

import org.gradle.*
import org.gradle.api.*
import org.gradle.api.artifacts.*
import org.gradle.api.artifacts.cache.*
import org.gradle.api.artifacts.component.*
import org.gradle.api.artifacts.dsl.*
import org.gradle.api.artifacts.ivy.*
import org.gradle.api.artifacts.maven.*
import org.gradle.api.artifacts.query.*
import org.gradle.api.artifacts.repositories.*
import org.gradle.api.artifacts.result.*
import org.gradle.api.component.*
import org.gradle.api.credentials.*
import org.gradle.api.distribution.*
import org.gradle.api.distribution.plugins.*
import org.gradle.api.dsl.*
import org.gradle.api.execution.*
import org.gradle.api.file.*
import org.gradle.api.initialization.*
import org.gradle.api.initialization.dsl.*
import org.gradle.api.invocation.*
import org.gradle.api.java.archives.*
import org.gradle.api.logging.*
import org.gradle.api.plugins.*
import org.gradle.api.plugins.announce.*
import org.gradle.api.plugins.antlr.*
import org.gradle.api.plugins.buildcomparison.gradle.*
import org.gradle.api.plugins.jetty.*
import org.gradle.api.plugins.osgi.*
import org.gradle.api.plugins.quality.*
import org.gradle.api.plugins.scala.*
import org.gradle.api.plugins.sonar.*
import org.gradle.api.plugins.sonar.model.*
import org.gradle.api.publish.*
import org.gradle.api.publish.ivy.*
import org.gradle.api.publish.ivy.plugins.*
import org.gradle.api.publish.ivy.tasks.*
import org.gradle.api.publish.maven.*
import org.gradle.api.publish.maven.plugins.*
import org.gradle.api.publish.maven.tasks.*
import org.gradle.api.publish.plugins.*
import org.gradle.api.reporting.*
import org.gradle.api.reporting.components.*
import org.gradle.api.reporting.dependencies.*
import org.gradle.api.reporting.model.*
import org.gradle.api.reporting.plugins.*
import org.gradle.api.resources.*
import org.gradle.api.specs.*
import org.gradle.api.tasks.*
import org.gradle.api.tasks.ant.*
import org.gradle.api.tasks.application.*
import org.gradle.api.tasks.bundling.*
import org.gradle.api.tasks.compile.*
import org.gradle.api.tasks.diagnostics.*
import org.gradle.api.tasks.incremental.*
import org.gradle.api.tasks.javadoc.*
import org.gradle.api.tasks.scala.*
import org.gradle.api.tasks.testing.*
import org.gradle.api.tasks.testing.junit.*
import org.gradle.api.tasks.testing.testng.*
import org.gradle.api.tasks.util.*
import org.gradle.api.tasks.wrapper.*
import org.gradle.authentication.*
import org.gradle.authentication.http.*
import org.gradle.buildinit.plugins.*
import org.gradle.buildinit.tasks.*
import org.gradle.external.javadoc.*
import org.gradle.ide.cdt.*
import org.gradle.ide.cdt.tasks.*
import org.gradle.ide.visualstudio.*
import org.gradle.ide.visualstudio.plugins.*
import org.gradle.ide.visualstudio.tasks.*
import org.gradle.ivy.*
import org.gradle.jvm.*
import org.gradle.jvm.application.scripts.*
import org.gradle.jvm.application.tasks.*
import org.gradle.jvm.platform.*
import org.gradle.jvm.plugins.*
import org.gradle.jvm.tasks.*
import org.gradle.jvm.tasks.api.*
import org.gradle.jvm.test.*
import org.gradle.jvm.toolchain.*
import org.gradle.language.assembler.*
import org.gradle.language.assembler.plugins.*
import org.gradle.language.assembler.tasks.*
import org.gradle.language.base.*
import org.gradle.language.base.artifact.*
import org.gradle.language.base.plugins.*
import org.gradle.language.base.sources.*
import org.gradle.language.c.*
import org.gradle.language.c.plugins.*
import org.gradle.language.c.tasks.*
import org.gradle.language.coffeescript.*
import org.gradle.language.cpp.*
import org.gradle.language.cpp.plugins.*
import org.gradle.language.cpp.tasks.*
import org.gradle.language.java.*
import org.gradle.language.java.artifact.*
import org.gradle.language.java.plugins.*
import org.gradle.language.java.tasks.*
import org.gradle.language.javascript.*
import org.gradle.language.jvm.*
import org.gradle.language.jvm.plugins.*
import org.gradle.language.jvm.tasks.*
import org.gradle.language.nativeplatform.*
import org.gradle.language.nativeplatform.tasks.*
import org.gradle.language.objectivec.*
import org.gradle.language.objectivec.plugins.*
import org.gradle.language.objectivec.tasks.*
import org.gradle.language.objectivecpp.*
import org.gradle.language.objectivecpp.plugins.*
import org.gradle.language.objectivecpp.tasks.*
import org.gradle.language.rc.*
import org.gradle.language.rc.plugins.*
import org.gradle.language.rc.tasks.*
import org.gradle.language.routes.*
import org.gradle.language.scala.*
import org.gradle.language.scala.plugins.*
import org.gradle.language.scala.tasks.*
import org.gradle.language.scala.toolchain.*
import org.gradle.language.twirl.*
import org.gradle.maven.*
import org.gradle.model.*
import org.gradle.nativeplatform.*
import org.gradle.nativeplatform.platform.*
import org.gradle.nativeplatform.plugins.*
import org.gradle.nativeplatform.tasks.*
import org.gradle.nativeplatform.test.*
import org.gradle.nativeplatform.test.cunit.*
import org.gradle.nativeplatform.test.cunit.plugins.*
import org.gradle.nativeplatform.test.cunit.tasks.*
import org.gradle.nativeplatform.test.googletest.*
import org.gradle.nativeplatform.test.googletest.plugins.*
import org.gradle.nativeplatform.test.plugins.*
import org.gradle.nativeplatform.test.tasks.*
import org.gradle.nativeplatform.toolchain.*
import org.gradle.nativeplatform.toolchain.plugins.*
import org.gradle.platform.base.*
import org.gradle.platform.base.binary
import org.gradle.platform.base.component.*
import org.gradle.platform.base.plugins.*
import org.gradle.platform.base.test.*
import org.gradle.play.*
import org.gradle.play.distribution.*
import org.gradle.play.platform.*
import org.gradle.play.plugins.*
import org.gradle.play.tasks.*
import org.gradle.play.toolchain.*
import org.gradle.plugin.use.*
import org.gradle.plugins.ear.*
import org.gradle.plugins.ear.descriptor.*
import org.gradle.plugins.ide.api.*
import org.gradle.plugins.ide.eclipse.*
import org.gradle.plugins.ide.idea.*
import org.gradle.plugins.javascript.base.*
import org.gradle.plugins.javascript.coffeescript.*
import org.gradle.plugins.javascript.envjs.*
import org.gradle.plugins.javascript.envjs.browser.*
import org.gradle.plugins.javascript.envjs.http.*
import org.gradle.plugins.javascript.envjs.http.simple.*
import org.gradle.plugins.javascript.jshint.*
import org.gradle.plugins.javascript.rhino.*
import org.gradle.plugins.javascript.rhino.worker.*
import org.gradle.plugins.signing.*
import org.gradle.plugins.signing.signatory.*
import org.gradle.plugins.signing.signatory.pgp.*
import org.gradle.plugins.signing.type.*
import org.gradle.plugins.signing.type.pgp.*
import org.gradle.process.*
import org.gradle.sonar.runner.*
import org.gradle.sonar.runner.plugins.*
import org.gradle.sonar.runner.tasks.*
import org.gradle.testing.jacoco.plugins.*
import org.gradle.testing.jacoco.tasks.*
import org.gradle.testkit.runner.*
import org.gradle.util.*

Tập lệnh xây dựng Gradle mô tả về một hoặc nhiều Dự án. Mỗi dự án được tạo thành từ các nhiệm vụ khác nhau. Nhiệm vụ là một phần công việc mà một bản dựng thực hiện. Nhiệm vụ có thể là biên dịch một số lớp, lưu trữ các tệp lớp vào thư mục đích riêng biệt, tạo JAR, tạo Javadoc hoặc xuất bản một số thành tựu lên kho lưu trữ.

Chương này giải thích về nhiệm vụ là gì và cách tạo và thực thi một tác vụ.

Xác định nhiệm vụ

Nhiệm vụ là một từ khóa được sử dụng để xác định một nhiệm vụ thành tập lệnh xây dựng. Hãy xem ví dụ sau đại diện cho một nhiệm vụ có tênhello bản in đó tutorialspoint. Sao chép và lưu tập lệnh sau vào một tệp có tênbuild.gradle. Tập lệnh xây dựng này xác định một tên tác vụ hello được sử dụng để in chuỗi điểm hướng dẫn.

task hello {
   doLast {
      println 'tutorialspoint'
   }
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh trên. Bạn nên thực thi điều này khi tệp build.gradle được lưu trữ.

C:\> gradle –q hello

Đầu ra:

tutorialspoint

Bạn có thể đơn giản hóa tác vụ xin chào này bằng cách chỉ định một phím tắt (đại diện cho một biểu tượng <<) đến doLasttuyên bố. Nếu bạn thêm phím tắt này vào tác vụ trênhello nó sẽ giống như tập lệnh sau.

task hello << {
   println 'tutorialspoint'
}

Bạn có thể thực thi tập lệnh trên bằng cách sử dụng gradle –q hello chỉ huy.

Dưới đây là một số biến thể trong việc xác định một nhiệm vụ, hãy xem nó. Ví dụ sau xác định một nhiệm vụhello.

Sao chép và lưu mã sau vào build.gradle tập tin.

task (hello) << {
   println "tutorialspoint"
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi lưu trữ tệp build.gradle.

C:\> gradle –q hello

Đầu ra:

tutorialspoint

Bạn cũng có thể sử dụng chuỗi cho tên nhiệm vụ. Hãy xem cùng một ví dụ xin chào. Ở đây chúng ta sẽ sử dụng String làm nhiệm vụ.

Sao chép và lưu mã sau vào build.gradle tập tin.

task('hello') << {
   println "tutorialspoint"
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi lưu trữ tệp build.gradle.

C:\> gradle –q hello

Đầu ra:

tutorialspoint

Bạn cũng có thể sử dụng cú pháp thay thế để xác định một nhiệm vụ. Đó là sử dụng phương thức create () để xác định một nhiệm vụ. Hãy xem cùng một ví dụ xin chào dưới đây.

Sao chép và lưu đoạn mã dưới đây vào build.gradle tập tin.

tasks.create(name: 'hello') << {
   println "tutorialspoint"
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi lưu trữ tệp build.gradle.

C:\> gradle –q hello

Đầu ra:

tutorialspoint

Định vị công việc

Nếu bạn muốn định vị các tác vụ mà bạn đã xác định trong tệp xây dựng, thì bạn phải sử dụng các thuộc tính dự án tiêu chuẩn tương ứng. Điều đó có nghĩa là mỗi tác vụ có sẵn như một thuộc tính của dự án, sử dụng tên tác vụ làm tên thuộc tính.

Hãy xem đoạn mã sau để truy cập các tác vụ dưới dạng thuộc tính.

Sao chép và lưu đoạn mã dưới đây vào build.gradle tập tin.

task hello

println hello.name
println project.hello.name

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi lưu trữ tệp build.gradle.

C:\> gradle –q hello

Đầu ra:

hello
hello

Bạn cũng có thể sử dụng tất cả các thuộc tính thông qua bộ sưu tập nhiệm vụ.

Sao chép và lưu mã sau vào build.gradle tập tin.

task hello

println tasks.hello.name
println tasks['hello'].name

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi lưu trữ tệp build.gradle.

C:\> gradle –q hello

Đầu ra:

hello
hello

Bạn cũng có thể truy cập đường dẫn của nhiệm vụ bằng các tác vụ. Đối với điều này, bạn có thể gọi phương thức getByPath () với một tên tác vụ hoặc một đường dẫn tương đối hoặc một đường dẫn tuyệt đối.

Sao chép và lưu đoạn mã dưới đây vào build.gradle tập tin.

project(':projectA') {
   task hello
}
task hello

println tasks.getByPath('hello').path
println tasks.getByPath(':hello').path
println tasks.getByPath('projectA:hello').path
println tasks.getByPath(':projectA:hello').path

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực thi điều này, nơi lưu trữ tệp build.gradle.

C:\> gradle –q hello

Đầu ra:

:hello
:hello
:projectA:hello
:projectA:hello

Thêm phụ thuộc vào công việc

Bạn có thể thực hiện một nhiệm vụ phụ thuộc vào một nhiệm vụ khác có nghĩa là khi một nhiệm vụ được hoàn thành thì chỉ có nhiệm vụ khác sẽ bắt đầu. Mỗi nhiệm vụ được phân biệt với tên nhiệm vụ. Tập hợp các tên nhiệm vụ được tham chiếu bởi bộ sưu tập nhiệm vụ của nó. Để tham chiếu đến một nhiệm vụ trong một dự án khác, bạn nên sử dụng đường dẫn của dự án làm tiền tố cho tên nhiệm vụ tương ứng.

Ví dụ sau đây thêm một phần phụ thuộc từ taskX vào taskY.

Sao chép và lưu đoạn mã dưới đây vào build.gradletập tin. Hãy xem đoạn mã sau.

task taskX << {
   println 'taskX'
}
task taskY(dependsOn: 'taskX') << {
   println "taskY"
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực hiện điều này, nơibuild.gradle các kho lưu trữ tập tin.

C:\> gradle –q taskY

Đầu ra:

taskX
taskY

Ví dụ trên là thêm sự phụ thuộc vào nhiệm vụ bằng cách sử dụng tên của nó. Có một cách khác để đạt được sự phụ thuộc của nhiệm vụ đó là xác định sự phụ thuộc bằng cách sử dụng một đối tượng Tác vụ.

Chúng ta hãy lấy ví dụ tương tự về taskY phụ thuộc vào taskX nhưng chúng ta đang sử dụng các đối tượng tác vụ thay vì tên tham chiếu tác vụ.

Sao chép và lưu mã sau vào build.gradle tập tin.

task taskY << {
   println 'taskY'
}
task taskX << {
   println 'taskX'
}
taskY.dependsOn taskX

Thực hiện lệnh sau trong dấu nhắc lệnh. Bạn nên thực thi điều này khi tệp build.gradle được lưu trữ.

C:\> gradle –q taskY

Đầu ra:

taskX
taskY

Ví dụ trên là thêm sự phụ thuộc vào nhiệm vụ bằng cách sử dụng tên của nó. Có một cách khác để đạt được sự phụ thuộc của nhiệm vụ đó là xác định sự phụ thuộc bằng cách sử dụng đối tượng Tác vụ.

Ở đây chúng ta lấy cùng một ví dụ rằng taskY phụ thuộc vào taskX nhưng chúng ta đang sử dụng các đối tượng tác vụ thay vì các tên tham chiếu tác vụ. Hãy nhìn vào nó.

Sao chép và lưu đoạn mã dưới đây vào build.gradletập tin. Hãy xem đoạn mã sau.

task taskX << {
   println 'taskX'
}
taskX.dependsOn {
   tasks.findAll { 
      task → task.name.startsWith('lib') 
   }
}
task lib1 << {
   println 'lib1'
}
task lib2 << {
   println 'lib2'
}
task notALib << {
   println 'notALib'
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Nó thực thi tập lệnh đã cho ở trên. Bạn nên thực hiện điều này, nơibuild.gradle các kho lưu trữ tập tin.

C:\> gradle –q taskX

Đầu ra:

lib1
lib2
taskX

Thêm mô tả vào công việc

Bạn có thể thêm mô tả cho nhiệm vụ của mình. Mô tả này được hiển thị khi thực thiGradle tasks. Điều này có thể thực hiện được bằng cách sử dụng từ khóa mô tả.

Sao chép và lưu mã sau vào build.gradletập tin. Hãy xem đoạn mã sau.

task copy(type: Copy) {
   description 'Copies the resource directory to the target directory.'
   from 'resources'
   into 'target'
   include('**/*.txt', '**/*.xml', '**/*.properties')
   println("description applied")
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Bạn nên thực thi điều này khi tệp build.gradle được lưu trữ.

C:\> gradle –q copy

Nếu lệnh được thực hiện thành công, bạn sẽ nhận được kết quả sau.

description applied

Bỏ qua nhiệm vụ

Bỏ qua các tác vụ có thể được thực hiện bằng cách chuyển một đóng vị ngữ. Điều này chỉ có thể thực hiện được nếu phương thức của một nhiệm vụ hoặc một lệnh đóngStopExecutionException trước khi công việc thực tế của một nhiệm vụ được thực thi.

Sao chép và lưu mã sau vào build.gradle tập tin.

task eclipse << {
   println 'Hello Eclipse'
}

// #1st approach - closure returning true, if the task should be executed, false if not.
eclipse.onlyIf {
   project.hasProperty('usingEclipse')
}

// #2nd approach - alternatively throw an StopExecutionException() like this
eclipse.doFirst {
   if(!usingEclipse) {
      throw new StopExecutionException()
   }
}

Thực hiện lệnh sau trong dấu nhắc lệnh. Bạn nên thực thi điều này khi tệp build.gradle được lưu trữ.

C:\> gradle –q eclipse

Cấu trúc nhiệm vụ

Gradle có các giai đoạn khác nhau, khi làm việc với các nhiệm vụ. Trước hết, có một giai đoạn cấu hình, trong đó mã, được chỉ định trực tiếp trong phần đóng của một tác vụ, được thực thi. Khối cấu hình được thực thi cho mọi tác vụ có sẵn và không chỉ cho những tác vụ sau này thực sự được thực thi.

Sau giai đoạn cấu hình, giai đoạn thực thi chạy mã bên trong doFirst hoặc là doLast đóng của các tác vụ đó, mà thực sự được thực thi.

Tập lệnh xây dựng Gradle xác định một quy trình để xây dựng các dự án; mỗi dự án chứa một số phụ thuộc và một số ấn phẩm. Sự phụ thuộc có nghĩa là những thứ hỗ trợ để xây dựng dự án của bạn, chẳng hạn như tệp JAR bắt buộc từ các dự án khác và các tệp JAR bên ngoài như JDBC JAR hoặc Eh-cache JAR trong đường dẫn lớp. Ấn phẩm có nghĩa là kết quả của dự án, chẳng hạn như tệp lớp thử nghiệm và tệp xây dựng, như tệp chiến tranh.

Tất cả hầu hết các dự án đều không khép kín. Họ cần các tệp do các dự án khác xây dựng để biên dịch và kiểm tra các tệp nguồn. Ví dụ: để sử dụng Hibernate trong dự án, bạn cần bao gồm một số JAR Hibernate trong classpath. Gradle sử dụng một số tập lệnh đặc biệt để xác định các phụ thuộc cần được tải xuống.

Gradle lo việc xây dựng và công bố kết quả ở đâu đó. Xuất bản dựa trên nhiệm vụ mà bạn xác định. Nó có thể muốn sao chép các tệp vào thư mục cục bộ hoặc tải chúng lên kho lưu trữ Maven hoặc lvy từ xa hoặc bạn có thể sử dụng các tệp từ một dự án khác trong cùng một bản dựng đa dự án. Chúng ta có thể gọi quá trình xuất bản một nhiệm vụ là xuất bản.

Khai báo sự phụ thuộc của bạn

Cấu hình phụ thuộc không là gì ngoài định nghĩa tập hợp các phụ thuộc. Bạn có thể sử dụng tính năng này để khai báo các phụ thuộc bên ngoài có nghĩa là bạn muốn tải xuống từ web. Điều này xác định các giá đỡ khác nhau như sau.

apply plugin: 'java'

repositories {
   mavenCentral()
}

dependencies {
   compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
   testCompile group: 'junit', name: 'junit', version: '4.+'
}

Cấu hình phụ thuộc

Cấu hình phụ thuộc không là gì ngoài việc xác định một tập hợp các phụ thuộc. Bạn có thể sử dụng tính năng này để khai báo các phần phụ thuộc bên ngoài mà bạn muốn tải xuống từ web. Điều này xác định các cấu hình tiêu chuẩn khác nhau sau đây.

  • Compile - Các phụ thuộc cần thiết để biên dịch nguồn sản xuất của dự án.

  • Runtime- Các phụ thuộc được yêu cầu bởi các lớp sản xuất trong thời gian chạy. Theo mặc định, cũng bao gồm các phụ thuộc thời gian biên dịch.

  • Test Compile- Các phụ thuộc cần thiết để biên dịch nguồn kiểm thử của dự án. Theo mặc định, nó bao gồm các lớp sản xuất đã biên dịch và các phụ thuộc thời gian biên dịch.

  • Test Runtime- Các phụ thuộc cần thiết để chạy các bài kiểm tra. Theo mặc định, nó bao gồm thời gian chạy và kiểm tra biên dịch phụ thuộc.

Sự phụ thuộc bên ngoài

Các phụ thuộc bên ngoài là một trong những loại phụ thuộc. Đây là phần phụ thuộc vào một số tệp được tạo bên ngoài trên bản dựng hiện tại và được lưu trữ trong một hệ thống lưu trữ nào đó, chẳng hạn như Maven central, hoặc một kho lưu trữ Maven hoặc lvy của công ty, hoặc thư mục I của hệ thống tệp cục bộ.

Đoạn mã sau là để xác định phần phụ thuộc bên ngoài. Sử dụng mã này trongbuild.gradle tập tin.

dependencies {
   compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
}

Phần phụ thuộc bên ngoài đang khai báo phần phụ thuộc bên ngoài và biểu mẫu phím tắt trông giống như "nhóm: tên: phiên bản".

Kho lưu trữ

Trong khi thêm các phụ thuộc bên ngoài. Gradle tìm kiếm chúng trong một kho lưu trữ. Kho lưu trữ chỉ là một tập hợp các tệp, được sắp xếp theo nhóm, tên và phiên bản. Theo mặc định, Gradle không xác định bất kỳ kho lưu trữ nào. Chúng ta phải xác định rõ ràng ít nhất một kho lưu trữ. Đoạn mã sau xác định cách xác định kho lưu trữ maven. Sử dụng mã này trongbuild.gradle tập tin.

repositories {
   mavenCentral()
}

Mã sau là để xác định maven từ xa. Sử dụng mã này trongbuild.gradle tập tin.

repositories {
   maven {
      url "http://repo.mycompany.com/maven2"
   }
}

Xuất bản đồ tạo tác

Các cấu hình phụ thuộc cũng được sử dụng để xuất bản tệp. Các tệp đã xuất bản này được gọi là hiện vật. Thông thường, chúng tôi sử dụng các trình cắm thêm để xác định các tạo tác. Tuy nhiên, bạn cần cho Gradle biết nơi xuất bản các hiện vật. Bạn có thể đạt được điều này bằng cách đính kèm các kho lưu trữ vào nhiệm vụ tải lên lưu trữ. Hãy xem cú pháp sau để xuất bản kho lưu trữ Maven. Trong khi thực thi, Gradle sẽ tạo và tải lên một Pom.xml theo yêu cầu của dự án. Sử dụng mã này trongbuild.gradle tập tin.

apply plugin: 'maven'

uploadArchives {
   repositories {
      mavenDeployer {
         repository(url: "file://localhost/tmp/myRepo/")
      }
   }
}

Plugin không có gì khác ngoài tập hợp các tác vụ, hầu hết tất cả các tác vụ hữu ích như tác vụ biên dịch, thiết lập đối tượng miền, thiết lập tệp nguồn, v.v. đều do plugin xử lý. Áp dụng plugin cho một dự án có nghĩa là cho phép plugin mở rộng khả năng của dự án. Các plugin có thể làm những việc như -

  • Mở rộng mô hình Gradle cơ bản (ví dụ: thêm các phần tử DSL mới có thể được cấu hình).
  • Định cấu hình dự án theo chuyển đổi (ví dụ: thêm nhiệm vụ mới hoặc định cấu hình các giá trị mặc định hợp lý).
  • Áp dụng cấu hình cụ thể (ví dụ: thêm kho lưu trữ tổ chức hoặc thực thi các tiêu chuẩn).

Các loại plugin

Có hai loại plugin trong Gradle, plugin script và plugin nhị phân. Phần bổ trợ tập lệnh là một tập lệnh xây dựng bổ sung cung cấp cách tiếp cận khai báo để thao tác với bản dựng. Điều này thường được sử dụng trong một bản dựng. Plugin nhị phân là các lớp triển khai giao diện plugin và áp dụng cách tiếp cận có lập trình để thao tác xây dựng. Các plugin nhị phân có thể nằm trong một tập lệnh xây dựng, với hệ thống phân cấp của dự án hoặc bên ngoài trong một plugin JAR.

Áp dụng các plugin

Project.apply()Phương thức API được sử dụng để áp dụng plugin cụ thể. Bạn có thể sử dụng cùng một plugin cho nhiều lần. Có hai loại plugin một là plugin script và plugin thứ hai là plugin nhị phân.

Script Plugins

Phần bổ trợ tập lệnh có thể được áp dụng từ một tập lệnh trên hệ thống tệp cục bộ hoặc tại một vị trí từ xa. Vị trí hệ thống tệp liên quan đến thư mục dự án, trong khi vị trí tập lệnh từ xa chỉ định URL HTTP. Hãy xem đoạn mã sau. Nó được sử dụng để áp dụngother.gradleplugin cho tập lệnh xây dựng. Sử dụng mã này trongbuild.gradle tập tin.

apply from: 'other.gradle'

Plugin nhị phân

Mỗi plugin được xác định bằng id plugin trong một số plugin cốt lõi đang sử dụng tên ngắn để áp dụng nó và một số plugin Cộng đồng đang sử dụng tên đủ điều kiện cho id plugin. Đôi khi nó cho phép chỉ định lớp plugin.

Hãy xem đoạn mã sau. Nó chỉ ra cách áp dụng java plugin bằng cách sử dụng loại của nó. Sử dụng mã này trongbuild.gradle tập tin.

apply plugin: JavaPlugin

Hãy xem đoạn mã sau để áp dụng plugin cốt lõi bằng cách sử dụng tên ngắn. Sử dụng mã này trongbuild.gradle tập tin.

plugins {
   id 'java'
}

Hãy xem đoạn mã sau để áp dụng plugin cộng đồng bằng tên ngắn. Sử dụng mã này trongbuild.gradle tập tin.

plugins {
   id "com.jfrog.bintray" version "0.4.1"
}

Viết các plugin tùy chỉnh

Trong khi tạo một plugin tùy chỉnh, bạn cần phải viết một triển khai của plugin. Gradle khởi tạo plugin và gọi phiên bản plugin bằng phương thức Plugin.apply (). Mẫu sau chứa một plugin chào, bổ sung thêm một nhiệm vụ chào vào dự án. Hãy xem đoạn mã sau. Sử dụng mã này trongbuild.gradle tập tin.

apply plugin: GreetingPlugin

class GreetingPlugin implements Plugin<Project> {
   void apply(Project project) {
      project.task('hello') << {
         println "Hello from the GreetingPlugin"
      }
   }
}

Sử dụng đoạn mã sau để thực thi đoạn mã trên.

C:\> gradle -q hello

Đầu ra:

Hello from the GreetingPlugin

Nhận đầu vào từ bản dựng

Hầu hết các plugin cần hỗ trợ cấu hình từ tập lệnh xây dựng. Dự án Gradle có một đối tượng ExtensionContainer được liên kết giúp theo dõi tất cả cài đặt và thuộc tính được chuyển đến các plugin.

Hãy thêm một đối tượng mở rộng đơn giản vào dự án. Ở đây chúng tôi thêm một đối tượng mở rộng lời chào vào dự án, cho phép bạn định cấu hình lời chào. Sử dụng mã này trongbuild.gradle tập tin.

apply plugin: GreetingPlugin

greeting.message = 'Hi from Gradle'

class GreetingPlugin implements Plugin<Project> {
   void apply(Project project) {
      // Add the 'greeting' extension object
      project.extensions.create("greeting", GreetingPluginExtension)
		
      // Add a task that uses the configuration
      project.task('hello') << {
         println project.greeting.message
      }
   }
}

class GreetingPluginExtension {
   def String message = 'Hello from GreetingPlugin'
}

Sử dụng đoạn mã sau để thực thi đoạn mã trên.

C:\> gradle -q hello

Đầu ra:

Hi from Gradle

Trong ví dụ này, GreetingPlugin là một đối tượng Groovy cũ đơn giản với một trường được gọi là tin nhắn. Đối tượng mở rộng được thêm vào danh sách plugin với lời chào tên. Đối tượng này sau đó trở thành thuộc tính dự án có cùng tên với đối tượng mở rộng.

Gradle thêm một cấu hình đóng cho từng đối tượng tiện ích, vì vậy bạn có thể nhóm các cài đặt lại với nhau. Hãy xem đoạn mã sau. Sử dụng mã này trongbuild.gradle tập tin.

apply plugin: GreetingPlugin

greeting {
   message = 'Hi'
   greeter = 'Gradle'
}

class GreetingPlugin implements Plugin<Project> {
   void apply(Project project) {
      project.extensions.create("greeting", GreetingPluginExtension)
		
      project.task('hello') << {
         println "${project.greeting.message} from ${project.greeting.greeter}"
      }
   }
}

class GreetingPluginExtension {
   String message
   String greeter
}

Sử dụng đoạn mã sau để thực thi đoạn mã trên.

C:\> gradle -q hello

Đầu ra:

Hello from Gradle

Plugin Gradle tiêu chuẩn

Có các plugin khác nhau được bao gồm trong bản phân phối Gradle.

Plugin ngôn ngữ

Các plugin này bổ sung hỗ trợ cho các ngôn ngữ khác nhau có thể được biên dịch và thực thi trong JVM.

Id plugin Tự động áp dụng Sự miêu tả
java java-base Thêm các khả năng biên dịch, kiểm tra và đóng gói Java vào một dự án. Nó đóng vai trò là cơ sở cho nhiều plugin Gradle khác.
vui vẻ java, groovy-base Thêm hỗ trợ để xây dựng các dự án Groovy.
bỏng nước java, scala-base Thêm hỗ trợ để xây dựng các dự án Scala.
antlr Java Thêm hỗ trợ để tạo trình phân tích cú pháp bằng Antlr.

Ủ các plugin ngôn ngữ

Các plugin này bổ sung hỗ trợ cho nhiều ngôn ngữ khác nhau.

Id plugin Tự động áp dụng Sự miêu tả
người lắp ráp - Thêm khả năng hợp ngữ bản địa vào một dự án.
c - Thêm khả năng biên dịch nguồn C vào một dự án.
cpp - Thêm khả năng biên dịch mã nguồn C ++ vào một dự án.
mục tiêu-c - Thêm khả năng biên dịch nguồn Objective-C vào một dự án.
mục tiêu-cpp - Thêm khả năng biên dịch mã nguồn Objective-C ++ vào một dự án.
tài nguyên cửa sổ - Thêm hỗ trợ để bao gồm các tài nguyên Windows trong các tệp nhị phân gốc.

Gradle cung cấp một dòng lệnh để thực thi tập lệnh xây dựng. Nó có thể thực hiện nhiều tác vụ cùng một lúc. Chương này giải thích cách thực thi nhiều tác vụ bằng các tùy chọn khác nhau.

Thực hiện nhiều nhiệm vụ

Bạn có thể thực thi nhiều tác vụ từ một tệp bản dựng duy nhất. Gradle có thể xử lý tệp xây dựng đó bằng cách sử dụnggradle command. Lệnh này sẽ biên dịch từng tác vụ theo thứ tự mà chúng được liệt kê và thực thi từng tác vụ cùng với các phụ thuộc bằng cách sử dụng các tùy chọn khác nhau.

Example- Có bốn nhiệm vụ - task1, task2, task3 và task4. Nhiệm vụ 3 và nhiệm vụ 4 phụ thuộc vào nhiệm vụ 1 và nhiệm vụ2. Hãy xem sơ đồ sau.

Trong 4 nhiệm vụ trên là phụ thuộc vào nhau được biểu diễn bằng biểu tượng mũi tên. Hãy xem đoạn mã sau. Sao chép có thể dán nó vàobuild.gradle tập tin.

task task1 << {
   println 'compiling source'
}

task task2(dependsOn: task1) << {
   println 'compiling unit tests'
}

task task3(dependsOn: [task1, task2]) << {
   println 'running unit tests'
}

task task4(dependsOn: [task1, task3]) << {
   println 'building the distribution'
}

Bạn có thể sử dụng mã sau để biên dịch và thực hiện tác vụ trên.

C:\> gradle task4 test

Đầu ra:

:task1
compiling source
:task2
compiling unit tests
:task3
running unit tests
:task4
building the distribution

BUILD SUCCESSFUL

Total time: 1 secs

Loại trừ Nhiệm vụ

Trong khi loại trừ một nhiệm vụ khỏi quá trình thực thi, bạn có thể sử dụng tùy chọn –x cùng với lệnh gradle và đề cập đến tên của nhiệm vụ mà bạn muốn loại trừ.

Sử dụng lệnh sau để loại trừ task4 khỏi tập lệnh trên.

C:\> gradle task4 -x test

Đầu ra:

:task1
compiling source
:task4
building the distribution

BUILD SUCCESSFUL

Total time: 1 secs

Tiếp tục xây dựng khi xảy ra lỗi

Gradle sẽ hủy bỏ việc thực thi và không xây dựng được ngay khi bất kỳ tác vụ nào không thành công. Bạn có thể tiếp tục thực hiện ngay cả khi xảy ra lỗi. Đối với điều này, bạn phải sử dụng tùy chọn –continue với lệnh gradle. Nó xử lý từng nhiệm vụ riêng biệt cùng với sự phụ thuộc của chúng. Và điểm quan trọng chính là nó sẽ bắt từng lỗi gặp phải và báo cáo khi kết thúc quá trình xây dựng. Giả sử nếu một tác vụ không thành công thì các tác vụ phụ thuộc tiếp theo cũng sẽ không được thực thi.

Chọn bản dựng nào để thực thi

Khi bạn chạy lệnh gradle, nó sẽ tìm kiếm một tệp xây dựng trong thư mục hiện tại. Bạn có thể sử dụng tùy chọn –b để chọn một tệp xây dựng cụ thể cùng với đường dẫn tuyệt đối. Ví dụ sau chọn một dự án xin chào từmyproject.gradle tập tin nằm trong subdir/ hãy nhìn vào nó.

task hello << {
   println "using build file '$buildFile.name' in '$buildFile.parentFile.name'."
}

Bạn có thể sử dụng lệnh sau để thực thi tập lệnh trên.

C:\> gradle -q -b subdir/myproject.gradle hello

Đầu ra:

using build file 'myproject.gradle' in 'subdir'.

Lấy thông tin bản dựng

Gradle cung cấp một số nhiệm vụ tích hợp để lấy thông tin chi tiết về nhiệm vụ và dự án. Điều này có thể hữu ích để hiểu cấu trúc và các phụ thuộc của bản dựng của bạn và để gỡ lỗi các vấn đề. Bạn có thể sử dụng plugin báo cáo dự án để thêm các nhiệm vụ vào dự án của mình, sẽ tạo ra các báo cáo này.

Danh sách dự án

Bạn có thể liệt kê hệ thống phân cấp dự án của dự án đã chọn và các dự án con của chúng bằng cách sử dụng gradle –q projectschỉ huy. Đây là ví dụ, sử dụng lệnh sau để liệt kê tất cả dự án trong tệp xây dựng.

C:\> gradle -q projects

Đầu ra:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

Báo cáo hiển thị mô tả của từng dự án nếu được chỉ định. Bạn có thể sử dụng lệnh sau để chỉ định mô tả. Dán nó vàobuild.gradle tập tin.

description = 'The shared API for the application'

Nhiệm vụ liệt kê

Bạn có thể liệt kê tất cả các nhiệm vụ thuộc về nhiều dự án bằng cách sử dụng lệnh sau.

C:\> gradle -q tasks

Đầu ra:

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Default tasks: dists

Build tasks
-----------
clean - Deletes the build directory (build)
dists - Builds the distribution
libs - Builds the JAR

Build Setup tasks
-----------------
init - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'projectReports'.
components - Displays the components produced by root project 'projectReports'. [incubating]
dependencies - Displays all dependencies declared in root project 'projectReports'.
dependencyInsight - Displays the insight into a specific dependency in root project 'projectReports'.
help - Displays a help message.
model - Displays the configuration model of root project 'projectReports'. [incubating]
projects - Displays the sub-projects of root project 'projectReports'.
properties - Displays the properties of root project 'projectReports'.
tasks - Displays the tasks runnable from root project 'projectReports' 
   (some of the displayed tasks may belong to subprojects).

To see all tasks and more detail, run gradle tasks --all

To see more detail about a task, run gradle help --task <task>

Bạn có thể sử dụng lệnh sau để hiển thị thông tin của tất cả các tác vụ.

C:\> gradle -q tasks --all

Đầu ra:

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Default tasks: dists

Build tasks
-----------
clean - Deletes the build directory (build)
api:clean - Deletes the build directory (build)
webapp:clean - Deletes the build directory (build)
dists - Builds the distribution [api:libs, webapp:libs]
   docs - Builds the documentation
api:libs - Builds the JAR
   api:compile - Compiles the source files
webapp:libs - Builds the JAR [api:libs]
   webapp:compile - Compiles the source files

Build Setup tasks
-----------------
init - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'projectReports'.
api:buildEnvironment - Displays all buildscript dependencies declared in project ':api'.
webapp:buildEnvironment - Displays all buildscript dependencies declared in project ':webapp'.
components - Displays the components produced by root project 'projectReports'. [incubating]
api:components - Displays the components produced by project ':api'. [incubating]
webapp:components - Displays the components produced by project ':webapp'. [incubating]
dependencies - Displays all dependencies declared in root project 'projectReports'.
api:dependencies - Displays all dependencies declared in project ':api'.
webapp:dependencies - Displays all dependencies declared in project ':webapp'.
dependencyInsight - Displays the insight into a specific dependency in root project 'projectReports'.
api:dependencyInsight - Displays the insight into a specific dependency in project ':api'.
webapp:dependencyInsight - Displays the insight into a specific dependency in project ':webapp'.
help - Displays a help message.
api:help - Displays a help message.
webapp:help - Displays a help message.
model - Displays the configuration model of root project 'projectReports'. [incubating]
api:model - Displays the configuration model of project ':api'. [incubating]
webapp:model - Displays the configuration model of project ':webapp'. [incubating]
projects - Displays the sub-projects of root project 'projectReports'.
api:projects - Displays the sub-projects of project ':api'.
webapp:projects - Displays the sub-projects of project ':webapp'.
properties - Displays the properties of root project 'projectReports'.
api:properties - Displays the properties of project ':api'.
webapp:properties - Displays the properties of project ':webapp'.
tasks - Displays the tasks runnable from root project 'projectReports' 
   (some of the displayed tasks may belong to subprojects).
api:tasks - Displays the tasks runnable from project ':api'.
webapp:tasks - Displays the tasks runnable from project ':webapp'.

Dưới đây là một số danh sách các lệnh trong một bảng mô tả các tùy chọn khác nhau.

Sơ không. Chỉ huy Sự miêu tả
1 gradle –q help –task <tên nhiệm vụ> Cung cấp thông tin sử dụng (chẳng hạn như đường dẫn, loại, mô tả, nhóm) về một nhiệm vụ cụ thể hoặc nhiều tác vụ.
2 phụ thuộc gradle –q Cung cấp danh sách các phụ thuộc của dự án đã chọn.
3 gradle -q api: phụ thuộc - cấu hình <tên tác vụ> Cung cấp danh sách các phần phụ thuộc hạn chế tương ứng với cấu hình.
4 gradle –q buildEnosystem Cung cấp danh sách phụ thuộc tập lệnh xây dựng.
5 gradle –q phụ thuộcInsight Cung cấp cái nhìn sâu sắc về một sự phụ thuộc cụ thể.
6 Thuộc tính Gradle –q Cung cấp danh sách các thuộc tính của dự án đã chọn.

Chương này giải thích về cách xây dựng một dự án java bằng tệp xây dựng Gradle.

Trước hết chúng ta phải thêm plugin java vào tập lệnh xây dựng vì nó cung cấp các tác vụ để biên dịch mã nguồn Java, chạy các bài kiểm tra đơn vị, tạo Javadoc và tạo tệp JAR. Sử dụng dòng sau trongbuild.gradle tập tin.

apply plugin: 'java'

Bố cục dự án mặc định của Java

Khi bạn thêm một plugin vào bản dựng của mình, nó sẽ giả sử một thiết lập nhất định cho dự án Java của bạn (tương tự như Maven). hãy xem xét cấu trúc thư mục sau.

  • src / main / java chứa mã nguồn Java
  • src / test / java chứa các bài kiểm tra Java

Nếu bạn làm theo thiết lập này, tệp xây dựng sau là đủ để biên dịch, kiểm tra và đóng gói một dự án Java.

Để bắt đầu xây dựng, hãy gõ lệnh sau trên dòng lệnh.

C:\> gradle build

SourceSetscó thể được sử dụng để chỉ định một cấu trúc dự án khác. Ví dụ: các nguồn được lưu trữ trongsrc thư mục thay vì trong src/main/java. Hãy xem cấu trúc thư mục sau.

apply plugin: 'java'
sourceSets {
   main {
      java {
         srcDir 'src'
      }
   }
	
   test {
      java {
         srcDir 'test'
      }
   }
}

init Thực thi Tác vụ

Gradle chưa hỗ trợ nhiều mẫu dự án. Nhưng nó cung cấp mộtinitnhiệm vụ tạo cấu trúc của một dự án Gradle mới. Không có tham số bổ sung, tác vụ này tạo một dự án Gradle, chứa các tệp trình bao bọc gradle,build.gradlesettings.gradle tập tin.

Khi thêm --type tham số với java-library như giá trị, cấu trúc dự án java được tạo và build.gradletệp chứa một mẫu Java nhất định với Junit. Hãy xem đoạn mã sau chobuild.gradle tập tin.

apply plugin: 'java'

repositories {
   jcenter()
}

dependencies {
   compile 'org.slf4j:slf4j-api:1.7.12'
   testCompile 'junit:junit:4.12'
}

Trong phần kho lưu trữ, nó xác định nơi để tìm các phụ thuộc. Jcenterlà để giải quyết các phụ thuộc của bạn. Phần phụ thuộc là để cung cấp thông tin về các phụ thuộc bên ngoài.

Chỉ định phiên bản Java

Thông thường, một dự án Java có một phiên bản và một JRE đích mà nó được biên dịch. CácversionsourceCompatibility tài sản có thể được thiết lập trong build.gradle tập tin.

version = 0.1.0
sourceCompatibility = 1.8

Nếu cấu phần là một ứng dụng Java thực thi, MANIFEST.MF tệp phải được biết về lớp với phương thức chính.

apply plugin: 'java'

jar {
   manifest {
      attributes 'Main-Class': 'com.example.main.Application'
   }
}

Example:

Tạo cấu trúc thư mục như thể hiện trong ảnh chụp màn hình bên dưới.

Sao chép mã java đã cho bên dưới vào tệp App.java và lưu trữ vào consumerbanking\src\main\java\com\bank directory.

package com.bank;

/**
* Hello world!
*
*/

public class App {
   public static void main( String[] args ){
      System.out.println( "Hello World!" );
   }
}

Sao chép mã java đã cho bên dưới vào tệp AppTset.java và lưu trữ vào consumerbanking\src\test\java\com\bank directory.

package com.bank;

/**
* Hello world!
*
*/

public class App{
   public static void main( String[] args ){
      System.out.println( "Hello World!" );
   }
}

Sao chép mã đã cho bên dưới vào tệp build.gradle và đặt vào consumerbanking\ danh mục.

apply plugin: 'java'

repositories {
   jcenter()
}

dependencies {
   compile 'org.slf4j:slf4j-api:1.7.12'
   testCompile 'junit:junit:4.12'
}

jar {
   manifest {
      attributes 'Main-Class': 'com.example.main.Application'
   }
}

Để biên dịch và thực thi tập lệnh trên, hãy sử dụng các lệnh dưới đây.

consumerbanking\> gradle tasks
consumerbanking\> gradle assemble
consumerbanking\> gradle build

Kiểm tra tất cả các tệp lớp trong các thư mục tương ứng và kiểm tra consumerbanking\build\lib thư mục cho consumerbanking.jar tập tin.

Chương này giải thích cách biên dịch và thực thi một dự án Groovy bằng cách sử dụng build.gradle tập tin.

Trình cắm Groovy

Trình cắm Groovy dành cho Gradle mở rộng trình cắm thêm Java và cung cấp các tác vụ cho các chương trình Groovy. Bạn có thể sử dụng dòng sau để áp dụng plugin groovy.

apply plugin: 'groovy'

Tệp tập lệnh xây dựng hoàn chỉnh như sau. Sao chép mã sau vàobuild.gradle tập tin.

apply plugin: 'groovy'

repositories {
   mavenCentral()
}

dependencies {
   compile 'org.codehaus.groovy:groovy-all:2.4.5'
   testCompile 'junit:junit:4.12'
}

Bạn có thể sử dụng lệnh sau để thực thi tập lệnh xây dựng.

gradle build

Bố cục dự án mặc định của các dự án Groovy

Plugin Groovy giả định một thiết lập nhất định cho dự án Groovy của bạn.

  • src / main / groovy chứa mã nguồn Groovy
  • src / test / groovy chứa các bài kiểm tra Groovy
  • src / main / java chứa mã nguồn Java
  • src / test / java chứa các bài kiểm tra Java

Kiểm tra thư mục tương ứng, nơi build.gradle nơi tập tin cho thư mục xây dựng.

Tác vụ kiểm tra tự động phát hiện và thực hiện tất cả các kiểm thử đơn vị trong bộ nguồn kiểm tra. Nó cũng tạo ra một báo cáo khi quá trình thực thi thử nghiệm hoàn tất. JUnit và TestNG là các API được hỗ trợ.

Nhiệm vụ kiểm tra cung cấp một Test.getDebug()phương thức có thể được thiết lập để khởi chạy để làm cho JVM chờ trình gỡ lỗi. Trước khi tiếp tục thực thi, nó đặt bài viết gỡ lỗi thành5005.

Kiểm tra phát hiện

Các Test Taskphát hiện lớp nào là lớp thử nghiệm bằng cách kiểm tra lớp thử nghiệm đã biên dịch. Theo mặc định, nó quét tất cả các tệp .class. Bạn có thể đặt bao gồm / loại trừ tùy chỉnh, chỉ những lớp đó mới được quét. Tùy thuộc vào khung kiểm tra được sử dụng (JUnit / TestNG), việc phát hiện lớp kiểm tra sử dụng các tiêu chí khác nhau.

Khi sử dụng JUnit, chúng tôi quét cả hai lớp thử nghiệm JUnit 3 và 4. Nếu bất kỳ tiêu chí nào sau đây khớp, lớp đó được coi là lớp thử nghiệm JUnit -

  • Lớp hoặc siêu lớp mở rộng TestCase hoặc GroovyTestCase
  • Lớp hoặc siêu lớp được chú thích bằng @RunWith
  • Lớp hoặc siêu lớp chứa một phương thức được chú thích bằng @Test
  • Khi sử dụng TestNG, chúng tôi quét các phương pháp được chú thích bằng @Test

Note- Các lớp trừu tượng không được thực thi. Gradle cũng quét cây kế thừa thành các tệp jar trên đường dẫn thử nghiệm.

Nếu bạn không muốn sử dụng tính năng phát hiện lớp kiểm tra, bạn có thể tắt nó bằng cách cài đặt scanForTestClasses thành sai.

Nhóm thử nghiệm

JUnit và TestNG cho phép phân nhóm các phương pháp thử nghiệm phức tạp. Để phân nhóm, các lớp và phương pháp kiểm tra JUnit JUnit 4.8 giới thiệu khái niệm về các loại. Tác vụ kiểm tra cho phép đặc tả các danh mục JUnit bạn muốn bao gồm và loại trừ.

Bạn có thể sử dụng đoạn mã sau trong tệp build.gradle để nhóm các phương pháp kiểm tra.

test {
   useJUnit {
      includeCategories 'org.gradle.junit.CategoryA'
      excludeCategories 'org.gradle.junit.CategoryB'
   }
}

Bao gồm và loại trừ các thử nghiệm cụ thể

Các Test lớp học có một includeexcludephương pháp. Những phương pháp này có thể được sử dụng để chỉ định, những thử nghiệm nào thực sự nên được chạy.

Chỉ chạy các bài kiểm tra được bao gồm -

test {
   include '**my.package.name/*'
}

Bỏ qua các bài kiểm tra bị loại trừ -

test {
   exclude '**my.package.name/*'
}

Mẫu build.gradle như hình bên dưới nó hiển thị các tùy chọn cấu hình khác nhau.

apply plugin: 'java' // adds 'test' task

test {
   // enable TestNG support (default is JUnit)
   useTestNG()

   // set a system property for the test JVM(s)
   systemProperty 'some.prop', 'value'

   // explicitly include or exclude tests
   include 'org/foo/**'
   exclude 'org/boo/**'

   // show standard out and standard error of the test JVM(s) on the console
   testLogging.showStandardStreams = true

   // set heap size for the test JVM(s)
   minHeapSize = "128m"
   maxHeapSize = "512m"

   // set JVM arguments for the test JVM(s)
   jvmArgs '-XX:MaxPermSize=256m'
   
   // listen to events in the test execution lifecycle
   beforeTest { 
      descriptor → logger.lifecycle("Running test: " + descriptor)
   }

   // listen to standard out and standard error of the test JVM(s)
   onOutput { 
      descriptor, event → logger.lifecycle
         ("Test: " + descriptor + " produced standard out/err: " 
         + event.message )
   }
}

Bạn có thể sử dụng cú pháp lệnh sau để thực hiện một số tác vụ kiểm tra.

gradle <someTestTask> --debug-jvm

Gradle có thể xử lý các dự án nhỏ nhất và lớn nhất một cách dễ dàng. Các dự án nhỏ có một tệp xây dựng duy nhất và một cây nguồn. Rất dễ hiểu và dễ hiểu một dự án đã được chia thành các mô-đun nhỏ hơn, phụ thuộc lẫn nhau. Gradle hoàn toàn hỗ trợ kịch bản này là xây dựng nhiều dự án.

Cấu trúc cho Xây dựng nhiều dự án

Những công trình như vậy có đủ hình dạng và kích thước, nhưng chúng có một số đặc điểm chung -

  • A settings.gradle tập tin trong thư mục gốc hoặc thư mục chính của dự án.

  • A build.gradle tập tin trong thư mục gốc hoặc thư mục chính.

  • Thư mục con có riêng *.gradle xây dựng tệp (một số bản dựng nhiều dự án có thể bỏ qua các tập lệnh xây dựng dự án con).

Để liệt kê tất cả các dự án trong tệp xây dựng, bạn có thể sử dụng lệnh sau.

C:\> gradle -q projects

Đầu ra:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

Báo cáo hiển thị mô tả của từng dự án, nếu được chỉ định. Bạn có thể sử dụng lệnh sau để chỉ định mô tả. Dán nó vàobuild.gradle tập tin.

description = 'The shared API for the application'

Chỉ định cấu hình bản dựng chung

Trong một build.gradle trong root_project, các cấu hình chung có thể được áp dụng cho tất cả các dự án hoặc chỉ cho các dự án con.

allprojects {
   group = 'com.example.gradle'
   version = '0.1.0'
}

subprojects {
   apply plugin: 'java'
   apply plugin: 'eclipse'
}

Điều này chỉ định một điểm chung com.example.gradle nhóm và 0.1.0phiên bản cho tất cả các dự án. Cácsubprojects việc đóng áp dụng các cấu hình chung cho tất cả các dự án con, nhưng không áp dụng cho dự án gốc, như allprojects đóng cửa không.

Cấu hình cụ thể và sự phụ thuộc của dự án

Cốt lõi uiutil các tiểu dự án cũng có thể có build.gradle tệp, nếu họ có nhu cầu cụ thể, chưa được cấu hình chung của dự án gốc áp dụng.

Ví dụ: dự án ui thường có sự phụ thuộc vào dự án cốt lõi. Vì vậy, dự án ui cầnbuild.gradle để xác định sự phụ thuộc này.

dependencies {
   compile project(':core')
   compile 'log4j:log4j:1.2.17'
}

Các phụ thuộc của dự án được chỉ định với phương pháp dự án.

Gradle cung cấp một số cách để triển khai xây dựng kho hiện vật. Khi triển khai chữ ký cho các tạo tác của bạn vào kho lưu trữ Maven, bạn cũng sẽ muốn ký vào tệp POM đã xuất bản.

Sử dụng Plugin Maven-Publishing

maven-publishplugin, được cung cấp bởi Gradle theo mặc định. Được sử dụng để xuất bản tập lệnh gradle. Hãy xem đoạn mã sau.

apply plugin: 'java'
apply plugin: 'maven-publish'

publishing {
   publications {
      mavenJava(MavenPublication) {
         from components.java
      }
   }

   repositories {
      maven {
         url "$buildDir/repo"
      }
   }
}

Có một số tùy chọn xuất bản, khi Javamaven-publishplugin được áp dụng. Hãy xem đoạn mã sau, nó sẽ triển khai dự án thành một kho lưu trữ từ xa.

apply plugin: 'groovy'
apply plugin: 'maven-publish'

group 'workshop'
version = '1.0.0'

publishing {
   publications {
      mavenJava(MavenPublication) { 
         from components.java 
      }
   }
	
   repositories {
      maven {
          default credentials for a nexus repository manager
         credentials {
            username 'admin'
            password 'admin123'
         }
         // url to the releases maven repository
            url "http://localhost:8081/nexus/content/repositories/releases/"
      }
   }
}

Chuyển đổi một dự án từ Maven sang Gradle

Có một lệnh đặc biệt để chuyển đổi Apache Maven pom.xml tệp để xây dựng tệp Gradle, nếu tất cả các plugin Maven được sử dụng đều biết đến tác vụ này.

Trong phần này như sau pom.xmlcấu hình maven sẽ được chuyển đổi thành dự án Gradle. Hãy nhìn vào nó.

<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>com.example.app</groupId>
   <artifactId>example-app</artifactId>
   <packaging>jar</packaging>
   
   <version>1.0.0-SNAPSHOT</version>
	
   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>

         <version>4.11</version>
         <scope>test</scope>
      </dependency>
   </dependencies>
	
</project>

Bạn có thể sử dụng lệnh sau trên dòng lệnh dẫn đến cấu hình Gradle sau.

C:\> gradle init --type pom

Các init nhiệm vụ phụ thuộc vào tác vụ trình bao bọc để một trình bao bọc Gradle được tạo.

Kết quả build.gradle tệp trông tương tự như thế này -

apply plugin: 'java'
apply plugin: 'maven'

group = 'com.example.app'
version = '1.0.0-SNAPSHOT'

description = """"""

sourceCompatibility = 1.5
targetCompatibility = 1.5

repositories {
   maven { url "http://repo.maven.apache.org/maven2" }
}

dependencies {
   testCompile group: 'junit', name: 'junit', version:'4.11'
}

Chương này giải thích về sự tích hợp của nhật thực và Gradle. Làm theo các bước dưới đây để thêm plugin Gradle vào nhật thực.

Bước 1 - Mở Eclipse Marketplace

Trước hết, hãy mở nhật thực được cài đặt trong hệ thống của bạn. Truy cập trợ giúp -> nhấp vào EclipseMarketplace. Hãy xem ảnh chụp màn hình sau.

Bước 2 - Cài đặt Plugin Buildship

Sau khi nhấp vào Thị trường Eclipse ở đó, bạn sẽ tìm thấy ảnh chụp màn hình sau. Đây trong thanh tìm kiếm bên trái, gõbuildship. Buildship là một plugin tích hợp Gradle. Khi bạn tìm thấy bản dựng trên màn hình, hãy nhấp vào cài đặt ở phía bên phải. Hãy xem ảnh chụp màn hình sau.

Sau đó, bạn sẽ tìm thấy ảnh chụp màn hình sau đây, bạn cần xác nhận cài đặt phần mềm bằng cách nhấp vào nút xác nhận. Hãy xem ảnh chụp màn hình sau.

Sau đó, bạn cần nhấp vào chấp nhận thỏa thuận cấp phép trong màn hình sau và nhấp vào kết thúc. Hãy xem ảnh chụp màn hình sau.

Sẽ mất một thời gian để cài đặt. Hãy xem ảnh chụp màn hình sau.

Sau đó, nó sẽ yêu cầu khởi động lại Eclipse. Ở đó bạn sẽ chọnYes.

Bước 3 - Xác minh Plugin Gradle

Trong khi xác minh, chúng tôi sẽ tạo một dự án mới bằng cách làm theo quy trình đã cho. Trong nhật thực, đi tới tệp -> bấm vào mới-> bấm vào các dự án khác. Ở đó bạn sẽ tìm thấy màn hình sau. Ở đó chọn dự án Gradle và nhấp vào tiếp theo. Hãy xem ảnh chụp màn hình sau đây.

Sau khi nhấp vào nút tiếp theo, bạn sẽ thấy màn hình sau. Ở đó, bạn sẽ cung cấp đường dẫn thư mục chính của Gradle của hệ thống tệp cục bộ và nhấp vào nút tiếp theo. Hãy xem ảnh chụp màn hình sau.

Hãy xem ảnh chụp màn hình sau đây, bạn sẽ cung cấp tên cho dự án Gradle. Trong hướng dẫn này, chúng tôi đang sử dụngdemoproject và nhấp vào nút kết thúc.

Hãy xem ảnh chụp màn hình sau đây, chúng tôi cần xác nhận dự án. Đối với điều đó, chúng tôi có nhấp vào nút kết thúc trong màn hình sau.

Bước 4 - Xác minh cấu trúc thư mục

Sau khi cài đặt thành công plugin Gradle, vui lòng kiểm tra cấu trúc thư mục của dự án demo cho các tệp và thư mục mặc định như trong ảnh chụp màn hình sau.