- Report the plugin versions the settings script declares, from a new
io.github.ben-manes.versions.settingsplugin that reaches every project as it is evaluated (#367, #533, #720, #1008) - Resolve
candidateon a GroovyrejectVersionIfclosure, which previously threw per selection and emptied the whole report (#1009, #1010) - Accumulate resolution strategies instead of replacing them, so a second
rejectVersionIfno longer discards the first (#1010) - Report the whole cause chain for an unresolved dependency instead of only the top-level message (#1010)
- Resolve the aggregate results from a detached configuration, so a build that locks all of its configurations no longer locks the plugin's own (#781, #1004, #1006)
- Only override an inherited target jvm version in the query copy (#746)
- Do not inherit dependency constraints in the query copy (#802)
- Show Kotlin and Groovy examples for every README snippet
Note
The new io.github.ben-manes.versions.settings plugin is now the recommended way to apply the plugin. Applied in settings.gradle(.kts), it gives every project the plugin and the root project the reporting task, so dependencyUpdates writes one merged report for single-project and multi-project builds alike, including builds with no root build script (#533). It also reports the versions of plugins declared in the settings script's own plugins block (#367).
The project-level io.github.ben-manes.versions plugin and the io.github.ben-manes.versions.contributor plugin for isolated projects both still work, and a build that keeps the project plugin alongside the settings plugin must request it without a version. See Applying the plugin to start fresh, or Migrating from prior versions to move an existing build.
The dependencyUpdates task has supported the configuration cache since v0.55.0. A custom outputFormatter runs at execution time, so its closure cannot capture the project or the build script. Read what it needs into local variables inside the configure block, and use the PlainTextReporter constructor that takes the project path:
tasks.named<DependencyUpdatesTask>("dependencyUpdates").configure {
val projectPath = project.path
outputFormatter {
PlainTextReporter(projectPath, revision, gradleReleaseChannel).write(System.out, this)
}
}In a precompiled script plugin a top-level val is a field of the script, so hoisting the value out of the configure block does not work.