2011-12-12 34 views
8

tôi nghĩ uploadArchives là một nhiệm vụ được cung cấp bởi plugin java. Trong build.gradle của tôi sử dụng plugin java:Tại sao uploadArchives không được liệt kê trong danh sách nhiệm vụ?

apply plugin: 'java' 

Nhưng nếu tôi gọi gradle tasks trên dòng lệnh, tôi không thể nhìn thấy nhiệm vụ uploadArchives.

Thậm chí không phải với gradle gradle tasks --all

Nhiệm vụ uploadArchives được liệt kê trong tài liệu java plugin của gradle thấy http://www.gradle.org/java_plugin (bảng 11).

Tôi sử dụng phiên bản gradle 1.0-mốc-6.

Tôi có thể gọi gradle uploadArchives mà không có lỗi, nhưng tác vụ không được liệt kê.

Trả lời

9

Tác vụ uploadArchives được thêm làm Quy tắc cho tập lệnh xây dựng của bạn và không rõ ràng theo tên. Trong đầu ra của "nhiệm vụ gradle", bạn sẽ thấy dòng này:

 
Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration. 

Điều này có nghĩa là, đối với mỗi cấu hình trong tệp xây dựng của bạn, theo tệp tải lên tồn tại. Plugin java thêm cấu hình có tên lưu trữ vào tập lệnh xây dựng của bạn. Bằng cách thêm cấu hình "lưu trữ" vào kịch bản xây dựng của bạn một cách rõ ràng bởi plugin java, nhiệm vụ uploadArchives cũng được thêm vào ngầm.

Có các trường hợp, trong đó gradle không thể biết nhiệm vụ nào cần được thực hiện theo quy tắc.

Ví dụ:

tasks.addRule("Pattern: ping<ID>") { String taskName -> 
    if (taskName.startsWith("ping")) { 
     task(taskName) << { 
      println "Pinging: " + (taskName - 'ping') 
     } 
    } 
} 

Không có cách nào để tìm ra nhiệm vụ ping sẽ được hiển thị khi chúng được chỉ cụ thể hóa khi được kích hoạt từ dòng lệnh thông qua 'gradle pingServer1 pingServer2 pingServer3'

regards, René

+0

Tôi biết bạn là một trong những nhà phát triển gradle ... Vì vậy, không nên những nhiệm vụ implicite cũng được liệt kê trong danh sách nhiệm vụ? – Cengiz

+1

Các tác vụ này được áp dụng theo quy tắc. đó là lý do tại sao họ không hiển thị trong danh sách nhiệm vụ thông thường nhưng ở dưới cùng của đầu ra.Một lý do cho điều này là, chúng được tạo ra ngay lập tức khi chúng được gọi từ dòng lệnh hoặc khi được tham chiếu trong kịch bản xây dựng. –

+1

Ví dụ khác về Quy tắc là "Mẫu sạch " được giới thiệu bởi plugin 'cơ sở'. Khi bạn gọi cleanCompileJava gradle tìm thấy không có nhiệm vụ với tên đó, nhưng nó tìm thấy một quy tắc mà nói rằng phù hợp với mô hình này của một "sạch" tên của nhiệm vụ hiện có (compileJava). trong quá trình thực hiện quy tắc, nhiệm vụ tạo ra "cleanCompileJava" trên thanh trượt sẽ xóa đầu ra của tác vụ 'compileJava'. Tôi nghĩ rằng nó không có ý nghĩa để gây ô nhiễm tổng quan nhiệm vụ với tất cả các đồng hành nhiệm vụ sạch của mọi nhiệm vụ sản xuất. –

1

Tác vụ uploadArchives là một phần của plugin maven. Bạn phải thêm:

apply plugin: 'maven' 
+0

Tôi có thể gọi 'gradle uploadArchives' không có lỗi và không có plugin maven. – Cengiz

+0

Lạ; luôn nghĩ rằng nó thuộc về maven-plugin. Bạn đã khai báo cấu hình 'uploadArchives {}' như được mô tả trong http://gradle.org/maven_plugin? – thoredge

+0

Chưa có tuyên bố. UploadArchives không làm gì trong trường hợp đó. Đây là kết quả: ' > uploadArchives gradle : compileJava UP-TO-NGÀY : processResources UP-TO-NGÀY : lớp UP-TO-NGÀY : jar UP-TO-NGÀY : uploadArchives BUILD THÀNH CÔNG ' – Cengiz

Các vấn đề liên quan