0

setVersionTask sets a member that I want to be used as input by getVersionTask. Here's my code:

class TaskA extends DefaultTask {
    @InputFile
    File pbxprojectFile
    @Optional
    String version

    @TaskAction
    void exec() {
        this.version  "version_set"
    }
}

class TaskB extends DefaultTask {
    @Input
    String version
}

task setVersionTask(type: TaskA){
    pbxprojectFile project.file('foo.txt')
}

task getVersionTask(type: TaskB){
    doFirst{
        println('version ' + setVersionTask.version)
    }
    version setVersionTask.version
    dependsOn 'setVersionTask'
}

When I go

./gradlew -q getVersion

I get

A problem was found with the configuration of task ':getVersionTask'. No value has been specified for property 'version'.

How do I accomplish that?

Thanks a bunch!

Riziero
  • 144
  • 2
  • 14
  • Why do you want to set the `version` property during the execution phase rather than the configuration phase? See https://docs.gradle.org/current/userguide/build_lifecycle.html for info on the build lifecycle. – Peter Ledbrook Aug 23 '18 at 14:10
  • Simply because it's not defined initially. It gets a value after taskA has run. – Riziero Aug 24 '18 at 12:13

1 Answers1

0

The trick was to set TaskB's version from TaskA's doLast:

task setVersionTask(type: TaskA){
    pbxprojectFile project.file('foo.txt')
    doLast{
        getVersionTask.version = version
    }
}

task getVersionTask(type: TaskB){
    doFirst{
        println('version ' + getVersionTask.version)
    }
    dependsOn 'setVersionTask'
}
Riziero
  • 144
  • 2
  • 14