Tôi có một tập lệnh chữ viết phức tạp bao bọc một tải các chức năng xung quanh việc xây dựng và triển khai một số dự án netbeans cho một số môi trường.Làm cách nào để nhập một tập lệnh Gradle vào tập lệnh khác?
Kịch bản hoạt động rất tốt, nhưng về bản chất, tất cả được cấu hình thông qua một nửa tá bản đồ chứa thông tin dự án và môi trường.
Tôi muốn tóm tắt các tác vụ vào một tệp khác, để tôi có thể chỉ định nghĩa các bản đồ của mình trong một tệp xây dựng đơn giản và nhập các tác vụ từ tệp khác. Bằng cách này, tôi có thể sử dụng cùng một nhiệm vụ cốt lõi cho một số dự án và cấu hình các dự án đó với một bộ bản đồ đơn giản.
Bất cứ ai có thể cho tôi biết cách tôi có thể nhập một tệp gradle vào một tệp khác, theo cách tương tự với nhiệm vụ của Ant không? Tôi đã trawled tài liệu của Gradle vô ích cho đến nay.
Thông tin cá
Sau phản ứng của Tom dưới đây, tôi nghĩ rằng tôi muốn thử và làm rõ chính xác những gì tôi có ý nghĩa.
Về cơ bản, tôi có một tập lệnh gradle chạy một số tiểu dự án. Tuy nhiên, các dự án con là tất cả các dự án Netbeans, và đi kèm với các kịch bản xây dựng kiến của riêng chúng, vì vậy tôi có các nhiệm vụ trong từng bước để gọi từng kịch bản này.
Vấn đề của tôi là tôi có một số cấu hình ở phía trên cùng của tập tin, chẳng hạn như:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
sau đó tôi tạo ra các nhiệm vụ như:
projects.each({
task "checkout_$it.shortname" << {
// Code to for example check module out from cvs using config from 'it'.
}
})
Tôi có rất nhiều các loại các đoạn mã tác vụ, và tất cả chúng đều là chung chung - chúng hoàn toàn phụ thuộc vào cấu hình trong danh sách dự án.
Vì vậy, những gì tôi muốn là một cách để đặt điều này trong một kịch bản riêng biệt và nhập nó trong các loại sau đây của cách:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
import("tasks.gradle") // This will import and run the script so that all tasks are generated for the projects given above.
Vì vậy, trong ví dụ này, tasks.gradle sẽ có tất cả các thế hệ nhiệm vụ chung mã trong và sẽ chạy cho các dự án được xác định trong tệp build.gradle chính. Theo cách này, task.gradle là một tệp có thể được sử dụng bởi tất cả các dự án lớn bao gồm một số tiểu dự án với các tệp xây dựng kiến trúc Netbeans.
Xem xét "áp dụng từ: 'other.gradle'" xây dựng để nhập khai báo bên ngoài. (Xem "12.4. Định cấu hình dự án bằng cách sử dụng tập lệnh xây dựng bên ngoài" tại đây http://gradle.org/0.9-preview-1/docs/userguide/tutorial_this_and_that.html#sec:configuring_using_external_script) –
@PetrGladkikh 'áp dụng từ' ngay lập tức thực thi các nhiệm vụ bên ngoài. Điều này có thể không thích hợp hơn trong logic thực thi (nghĩa là tôi muốn thực hiện các tác vụ khi tôi muốn, không phải ngay lập tức). –
Câu lệnh này trong chú thích ở trên là ** không đúng **: 'apply from' ngay lập tức thực hiện các tác vụ bên ngoài. Đừng bị lừa dối. Các nhiệm vụ bên ngoài được cấu hình, không được thực hiện. – Jarekczek