【发布时间】:2021-06-30 15:00:02
【问题描述】:
我正在尝试构建一个自定义 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
它工作正常并打印“Hello, World!”到构建窗口。但是,我无法弄清楚调用 B 类的任务的语法。
我该怎么做? (或者我只是想这样做吗?)
我注意到的一些相当奇怪的事情......
- 类中方法的名称(例如“printHello”)似乎无关紧要:任何合理的名称都会产生相同的输出 (?)。
- 通过 gradlew.bat 调用时,任务名称的任何明确子字符串的工作方式相同,例如,“GRADLEW helloA”或“GRADLEW hell”。我想这只是 GRADLE 试图提供帮助(?)。
【问题讨论】:
-
你好像在问"How to pass an argument to a Gradle task?" 简短的回答是:你不能使用方法参数来做到这一点,你必须使用项目属性。
标签: android gradle android-gradle-plugin build.gradle