The Wrapper Upgrade Gradle Plugin creates tasks to upgrade the Gradle Wrapper for target projects hosted on GitHub.
Apply the plugin to a dedicated project and configure which project needs to be upgraded. Example:
Kotlin DSL
plugins {
id("base")
id("org.gradle.wrapper-upgrade") version "0.11.1"
}
wrapperUpgrade {
gradle {
register("some-gradle-project") {
repo.set("my-org/some-gradle-project")
baseBranch.set("release")
}
register("some-samples-gradle-project") {
repo.set("my-org/some-samples-gradle-project")
dir.set("samples")
}
}
maven {
register("some-maven-project") {
repo.set("my-org/some-maven-project")
baseBranch.set("release")
}
register("some-samples-maven-project") {
repo.set("my-org/some-samples-maven-project")
baseBranch.set("samples")
}
}
}
Groovy DSL
plugins {
id 'base'
id 'org.gradle.wrapper-upgrade' version '0.11.4'
}
wrapperUpgrade {
gradle {
'some-gradle-project' {
repo = 'my-org/some-gradle-project'
baseBranch = 'release'
}
'some-samples-gradle-project' {
repo = 'my-org/some-samples-gradle-project'
dir = 'samples'
}
}
maven {
'some-maven-project' {
repo = 'my-org/some-maven-project'
baseBranch = 'release'
}
'some-samples-maven-project' {
repo = 'my-org/some-samples-maven-project'
dir = 'samples'
}
}
}
This will create one task per configured project and 2 aggregating tasks: upgradeGradleWrapperAll
and upgradeMavenWrapperAll
that will run all the specific tasks.
Running ./gradlew upgradeGradleWrapperXXX
will:
- clone the project XXX in
build/git-clones
- run in the cloned project
./gradlew wrapper --gradle-version=<latest_gradle_version>
- run a second time
./gradlew wrapper --gradle-version=<latest_gradle_version>
- If changes occurred
- create a specific branch
- commit and push the branch
- create a pull request on GitHub, it requires a GitHub personal access token (PAT), passed with
WRAPPER_UPGRADE_GIT_TOKEN
environment variable. This token is used to get the existing PRs on the repo and create one if needed, hence it requires:- the
repo
scope for a classic PAT - read-write permissions for "Pull requests" on the relevant repos for a fine-grained PAT
- the
Note that a check is done first to make sure the branch does not exist yet. That way you can run upgradeGradleWrapperAll
and upgradeMavenWrapperAll
periodically with a cron, CI job... a bit like dependabot does for upgrading libs.
Running upgradeMavenWrapperXXX
will do the same, executing ./mvnw wrapper:wrapper -Dmaven=<latest_maven_version>
instead.
wrapperUpgrade {
<gradle|maven> {
name {
repo = ...
baseBranch = ...
dir = ...
options {
gitCommitExtraArgs = [...]
allowPreRelease = [...]
}
}
}
}
Field | description |
---|---|
name |
A name identifying the upgrade, it can be different from the project name, for example when you need to upgrade multiple gradle projects in the same git project |
repo |
The GitHub repository to clone, format 'organization/project` |
dir |
The directory inside the project base directory to run the gradle or maven upgrade in |
baseBranch |
The git branch to checkout and that the pull request will target |
options.gitCommitExtraArgs |
List of additional git commit arguments |
options.allowPreRelease |
Boolean: true will get the latest Maven/Gradle version even if it's a pre-release. Default is false. |
options.labels |
Optional list of label (names) that will be added to the PR. |
The Wrapper Upgrade Gradle Plugin is open-source software released under the Apache 2.0 License.