You don’t need to configure the args of your createDatabase task at configuration time. You can create a task such as configureDatabase that reads the properties file created by createClient and sets the args value of createDatabase during the execution phase.
Alternatively, you could create a class that implements CommandLineArgumentProvider to load the property file and provide the appropriate argument. The execution of this logic should be deferred until the createDatabase task actually requires it.
Using exec in your own task action should work as well. However, I was specifically mentioning that you can continue to use an Exec task, but defer adding the final argument until execution with a task that does nothing other than read the properties and add the arg to the createDatabase task. Something like this would work: