我正在用Java编写Gradle插件,是的,我知道我可以使用System.out.println
,或者只是用Groovy编写它。
但我很好奇其中一个Gradle类中是否存在直接静态println
函数。我找不到一个。我想知道是否有这样的事情:
package org.gradlerocks;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
static import org.gradle.api.Something.println;
public class RockItTask extends DefaultTask {
@TaskAction
public void opine() {
System.out.println("Yep. Gradle rocks.");
// this would be groovy/gradle-ish:
println("Yep. Gradle rocks.");
}
}
我想知道是否有一些我可以导入静态println
的Gradle类。
否则我可以编写自己的静态println函数。但我想我会问社区是否已经存在。
答案 0 :(得分:1)
据我所知,Groovy Development Kit中没有这样的方法。我建议你不要写自己的。
即使您正在为Gradle开发一个插件,它自然可以在Groovy环境中运行,但对于这个项目,您使用的是Java。在Java中,您使用System.out.println(...)
。如果你想以Groovy-ish风格开发你的插件,你应该使用Groovy(例如与@CompileStatic
结合使用)。在Groovy中,在阅读代码时看到一个简单的println(...)
语句会很自然,在Java中它是不可能的。读者可能会感到困惑或需要额外检查,这种方法来自哪里。或者你为所有Java类添加is(Object)
方法只是为了让它们看起来像Groovy-ish?坚持使用您正在使用的语言并应用其惯例,而不是其他语言的惯例。
请注意,即使Groovy向您的环境添加了更多自动导入,println(...)
也不是静态导入,而是method on Object
,作为Groovy JDK增强添加(与{{相当) 1}})。
如果您要求使用最流行的方式来记录消息,请查看the Gradle docs on logging:
Gradle将写入标准输出的任何内容重定向到QUIET日志级别的日志系统。
要获得更详细的日志体验,您的插件可以使用each(Closure)
实例和每个Logger
提供的Project
实例来支持不同日志级别的日志记录。