2013-01-25 35 views
19

Tôi đã tìm kiếm trên Google, nhưng dường như không có bất kỳ tài liệu nào trên trang Gradle hoặc thậm chí mọi người thảo luận về điều này trong diễn đàn.Đầu ra màu Gradle

Tôi đã cài đặt Gradle trên máy Mac (10.8.2, ML) và đang tạo tập lệnh build.gradle tùy chỉnh. Khi tôi gọi println(), tôi muốn làm cho đầu ra có màu (như các lỗi màu đỏ, thông tin màu xanh lục, vv). Làm thế nào để làm điều này trong kịch bản xây dựng gradle của tôi?

Dưới đây là một ví dụ về mã tôi có cho đến nay:

def proc = "echo `DATE`".execute() 
proc.in.eachLine {line -> println line} 
proc.err.eachLine {line -> println 'ERROR: ' + line} 

On this gradle forum, họ nói về phong cách khác nhau như bình thường, tiêu đề, userinput, nhận dạng, mô tả, progressstatus, thất bại, thông tin, và sai, như một phần của lớp StyledTextOutput. Có vẻ như đây là một lớp học nội bộ. Có cách nào đơn giản để khai thác các quyền hạn in màu của Gradle/Groovy mà không cần nhập nhiều gói?

Trả lời

22

Tìm câu trả lời! Theo this gradle forum post, không có giao diện công cộng để tô màu đầu ra của trình ghi nhật ký. Bạn được tự do sử dụng các lớp bên trong, nhưng những lớp này có thể thay đổi trong các phiên bản sau. Trong kịch bản gradle, đặt ở đầu trang:

import org.gradle.logging.StyledTextOutput; 
import org.gradle.logging.StyledTextOutputFactory; 
import static org.gradle.logging.StyledTextOutput.Style; 

(. Tôi vẫn chưa tìm ra cách để di chuyển này đến tập tin init.gradle) Sau đó một thời gian ngắn sau đó, xác định

def out = services.get(StyledTextOutputFactory).create("blah") 

tôi vẫn không chắc chắn những gì cần phải được trong chuỗi của phương pháp tạo ra (nó dường như không ảnh hưởng đến bất cứ điều gì được nêu ra). Sau đó trong nhiệm vụ của bạn,

out.withStyle(Style.Info).println('colored text') 

này nên làm việc với tất cả các loại: bình thường, tiêu đề, userinput, nhận dạng, mô tả, progressstatus, thất bại, thông tin, và không bị lỗi. Một bước bổ sung nếu bạn muốn tùy chỉnh màu sắc của từng loại, thêm dòng sau vào một tập tin init.gradle trong ~/thư mục của bạn .gradle (hoặc other options):

System.setProperty('org.gradle.color.error', 'RED') 

và sau đó thay thế các "lỗi" loại với bất kỳ từ danh sách ở trên.

+0

Dường như lập luận để tạo ra là một phạm trù, tương tự như một loại log4j. Nó có thể là, ví dụ, tên của lớp làm việc đăng nhập. Danh mục có thể là một Chuỗi (như trên) hoặc một Lớp. Ngoài ra, người ta có thể cung cấp một 'org.gradle.api.logging.LogLevel' của' DEGUG', 'INFO',' WARN', 'ERROR',' LIFECYCLE' hoặc 'QUIET'. Cuối cùng, người ta có thể cung cấp cả một loại (như là một 'String' hoặc' Class') và một 'LogLevel'. –

+0

Tôi đã sử dụng ở trên và đặt 'System.setProperty ('org.gradle.logging.StyledTextOutput.Style.Success', 'GREEN')' và tôi đã sử dụng nó là 'out.withStyle (Style.Success) .println (configure.runtime) 'nhưng nó không xuất hiện XANH (chỉ là màu trắng mặc định, cho gnome-terminal Ubuntu của tôi). Bất kỳ thông tin chi tiết nào về hành vi này? – Sonny

+0

Trong trường hợp bất kỳ ai khác nên tự hỏi: 'services' là thuộc tính của cả' GradleInternal' và 'ProjectInternal'. Vì tôi muốn sử dụng đầu ra màu từ một plugin Gradle được viết bằng Java, tôi cần phải tạo một thể hiện 'Gradle' /' Project' cho một trong những giao diện nội bộ đó để giữ thuộc tính dịch vụ. – Chriki

2

với Gradle 3,3 import org.gradle.internal.logging.text.StyledTextOutput; import org.gradle.internal.logging.text.StyledTextOutputFactory;

def out = services.get(StyledTextOutputFactory).create("blah") out.withStyle(Style.Info).println("File-utils.gradle" + "," + str)

+0

Điều này hoàn toàn giống với câu trả lời được chấp nhận, được đăng hơn 4 năm sau đó, với ít thông tin hơn và không có liên kết đến nguồn. – Raniz

+0

Thực tế, nội dung nhập khác nhau và câu trả lời được đăng hơn 4 năm sau đã lỗi thời. nó không dễ dàng tìm thấy câu trả lời chính xác. Và tôi không thể tìm thấy "giống như câu trả lời được chấp nhận" – Bill

+0

Vì nó chỉ là nhập khẩu đã thay đổi, bạn có thể chỉnh sửa câu trả lời được chấp nhận để làm cho nó cập nhật – Raniz

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