如何在自定义 Gradle 任务中调用方法?

不要恐慌

我正在尝试构建一个自定义 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 类的任务的语法。

我怎么做?(或者我只是想以这种方式做到这一点?)

我注意到的一些相当奇怪的事情......

  1. 类中方法的名称(例如,“printHello”)似乎无关紧要:任何合理的名称都会产生相同的输出(?)。
  2. 当通过 gradlew.bat 调用时,任务名称的任何明确子字符串的工作方式相同,例如,“GRADLEW helloA”或“GRADLEW hell”。我想这只是 GRADLE 试图提供帮助(?)。
马尤尔·加吉拉

你不能直接将它作为参数传递给方法。但是,如果您希望有一种使用@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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在build.gradle中定义和调用自定义方法

如何在自定义WAR任务中强制Gradle覆盖资源文件?

Gradle中的自定义任务/插件

如何在gradle中创建自定义任务以将Java和Kotlin代码打包到jar中?

如何在Gradle中的buildSrc下的自定义任务中使用第三方依赖项

Gradle:如何在编译后但将文件打包到Jar中之前添加自定义任务?

在Gradle中的自定义任务中运行任务

如何在自定义 gradle 插件中创建 .jar 文件?

如何在gradle插件中添加自定义依赖项处理程序?

如何在自定义gradle插件中获取project.sourceSets.test.runtimeClasspath

在自定义任务中执行Gradle构建任务

从任务中调用任务的替代方法,Gradle

Gradle Protobuf自定义任务

Gradle Javadoc自定义任务

Jar的Gradle自定义任务

如何从gradle中的自定义配置创建ClassLoader?

gradle:如何在方法中运行任务

Gradle 在自定义运行任务中创建 args

在自定义uml任务中找不到Gradle模块

自定义任务中的Gradle set属性

自定义gradle任务中的注释继承

在自定义 gradle 插件中,如何添加任务取决于其他插件中定义的任务?

如何仅列出 Gradle 构建文件中的自定义任务?

如何使用不同的pluginClasspath在Gradle中配置自定义findbugs任务

如何使用 Gradle 在自定义 jar 任务中实现工件?

自定义战争任务并在Gradle中应用自定义资源

如何在createStartScripts任务中更改unixStartScriptGenerator.template,以便distTar在build.gradle中使用我的自定义模板文件?

Gradle自定义buildScriptRepository方法

如何在流程中调用自定义方法(WinForms)