I have a gradle plugin that uses the project.version
variable.
How ever, the version in the plugin does not update when I change the version in the build.gradle
file.
// my-plugin
void apply(Project project) {
project.tasks.create(name: 'printVersionFromPlugin') {
println project.version
}
}
version '1.0.1' // used to be 1.0.0
task printVersion {
println project.version
}
apply plugin: 'my-plugin'
> gradle printVersion
1.0.1
> gradle printVersionFromPlugin
1.0.0
You can use gradle properties to extract project version without adding a dedicated task to the build.gradle file.
For example:
gradle properties -q | grep "version:" | awk '{print $2}'
Both the build script and the plugin make the same mistake. They print the version as part of configuring the task, rather than giving the task a behavior (task action). If the plugin is applied before the version is set in the build script (which is normally the case), it will print the previous value of the version
property (perhaps one is set in gradle.properties
).
Correct task declaration:
task printVersion {
// any code that goes here is part of configuring the task
// this code will always get run, even if the task is not executed
doLast { // add a task action
// any code that goes here is part of executing the task
// this code will only get run if and when the task gets executed
println project.version
}
}
Same for the plugin's task.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With