我正在尝试构建一个自定义 Gradle 任务来执行一些应用程序维护操作。我想将参数传递给任务以控制操作。为了说明我的困境,请考虑以下两个微不足道的自定义任务类:
// Custom task with no arguments
public class HelloClassA extends DefaultTask {
@TaskAction
public void printHello()
{
println "Hello, World!"
}
}
// Custom task with one argument
public class HelloClassB extends DefaultTask {
@TaskAction
public void printMsg(String msg)
{
println msg
}
}
除了“A”打印硬编码字符串而“B”接受字符串作为参数之外,它们是相同的。
A 类用于以下任务:
task helloA(type:HelloClassA) { }
并由例如调用,
gradlew.bat helloA
它工作正常并打印“你好,世界!” 到构建窗口。但是,我无法弄清楚调用 B 类的任务的语法。
我怎么做?(或者我只是想以这种方式做到这一点?)
我注意到的一些相当奇怪的事情......
你不能直接将它作为参数传递给方法。但是,如果您希望有一种使用@Input
注释的方法。
以下是您的用例示例:
abstract class HelloClassB extends DefaultTask {
@Input
abstract Property<String> getMsg()//this is an abstract method to get values
@TaskAction
def printMsg() {
println msg.get() // here we get the value set from task.register
}
}
// printB is the task name
tasks.register('printB',HelloClassB) {
msg = 'Hello B' // here we set the Input value
}
现在在你的终端运行: gradlew -q printB
如果您想阅读更多相关信息,请查看此处:https : //docs.gradle.org/current/userguide/custom_tasks.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句