带有扩展名的自定义Gradle插件执行任务未正确使用输入

带有扩展名的自定义Gradle插件执行任务未正确使用输入,gradle,gradle-plugin,Gradle,Gradle Plugin,我将遵循Gradle文档的部分,特别是关于。文档提供的以下示例与预期完全一样: apply plugin: GreetingPlugin greeting.message = 'Hi from Gradle' class GreetingPlugin implements Plugin<Project> { void apply(Project project) { // Add the 'greeting' extension object

我将遵循Gradle文档的部分,特别是关于。文档提供的以下示例与预期完全一样:

apply plugin: GreetingPlugin

greeting.message = 'Hi from Gradle'

class GreetingPlugin implements Plugin<Project> {
    void apply(Project project) {
        // Add the 'greeting' extension object
        project.extensions.create("greeting", GreetingPluginExtension)
        // Add a task that uses the configuration
        project.task('hello') << {
            println project.greeting.message
        }
    }
}

class GreetingPluginExtension {
    def String message = 'Hello from GreetingPlugin'
}
我希望自定义插件执行外部命令(使用),但是当将任务更改为类型(包括Exec以外的类型,例如)时,生成的输入将停止正常工作:

// previous and following sections omitted for brevity
project.task('hello', type: Exec) {
    println project.greeting.message
}
输出:

> gradle -q hello
Hi from Gradle
> gradle -q hello
Hello from GreetingPlugin

有人知道问题可能是什么吗?

这与任务类型无关,这是典型的
,谢谢你的回答。不过,这只能解释为什么会出现这个问题。你知道有什么解决方案或替代方案可以达到预期的效果吗?嗯,我确实想解决这个问题。。。就像大多数人在这个网站上提问一样。:)谢谢你的解决方案。
project.task('hello') << {
    println project.greeting.message
}
project.task('hello', type: Exec) {
    println project.greeting.message
}
void apply(Project project) {
    project.afterEvaluate {
        project.task('hello', type: Exec) {
            println project.greeting.message
        }
    }
}