2015-04-16 27 views
6

Tôi chỉ có một vài ngày để sử dụng gradlegọi gradle “xây dựng” nhiệm vụ trong một dự án khác

Trong kịch bản lệnh build.gradle hiện tại của tôi Tôi có nhiệm vụ mà tôi muốn gọi nhiệm vụ xây dựng trong dự án khác (tức là được định nghĩa trong một build.gradle khác ở một nơi khác) sau mỗi lần nó được thực hiện

Câu hỏi của tôi là làm cách nào để gọi một tác vụ từ một dự án khác?

Tôi đoán tôi muốn làm một cái gì đó như tasks.build.execute() nhưng nó dường như không hoạt động. Tôi đã thử điều này:

commandLine "${rootDir}\\gradle", 'build', 'eclipse' 

ít nhất là đã thi hành và nhật thực cho dự án hiện tại của tôi chứ không phải dự án chính. Hy vọng câu hỏi của tôi là rõ ràng

+0

tôi đã có thể tham khảo các nhiệm vụ trong dự án gốc nhưng khi tôi làm điều này rootProject.tasks.build.execute() nó dường như không thực hiện đúng cách – hamad32

+0

Điều gì không hoạt động chính xác? – Opal

Trả lời

12

Đầu đọc này: http://gradle.org/docs/current/userguide/multi_project_builds.html

Nếu bạn có một dự án đa xây dựng Bạn cần một dự án rễ có chứa tập tin settings.gradle với một cái gì đó như:

include 'myproject1' 
include 'myproject2' 

Hơn bạn chỉ có thể làm cho một sự phụ thuộc từ một dự án khác như thế này:

myproject1/gradle.build

task someOtherTask() << { 
    println 'Hello' 
} 

myproject2/gradle.build

task sometask(dependsOn: ':myproject1:someOtherTask') << { 
    //do something here 
} 

Hoặc nếu bạn muốn gọi một nhiệm vụ:

project(':myproject1').tasks.build.execute() 

Chú ý: Bạn cần phải áp dụng plugin java để làm cho xây dựng nhiệm vụ có sẵn.

+0

Sau khi tìm kiếm rộng rãi về quản lý phụ thuộc trên các sản phẩm Gradle, đây là câu trả lời khiến mọi thứ hoạt động hiệu quả với tôi. Cảm ơn! –

+1

Câu trả lời hay, phụ thuộc vào mẹo –

11

Điều chỉnh con đường buildfile, v.v .:

task buildSomethingElse(type: GradleBuild) { 
    buildFile = '../someOtherDirectory/build.gradle' 
    tasks = ['build'] 
} 

build.finalizedBy('buildsomethingElse') 

tham khảo: Gradle tổ chức xây dựng hướng dẫn logic, đoạn 59.5.

Bạn có thể áp dụng điều này cho một dự án kiến ​​là tốt, bằng cách thêm một tập tin build.gradle một dòng trong dự án kiến ​​của bạn mà chỉ gọi kiến, như vậy:

ant.importBuild 'build.xml' 
Các vấn đề liên quan