anchor.diff:   }
   ```
   
  +
  +=== Deprecations
  +
  +[[convention_mapping]]
  +==== Using convention mapping with properties with type Provider is deprecated
  +Convention mapping is an internal feature that is been replaced by the <<lazy_configuration#lazy_configuration,Provider API>>.
  +When mixing convention mapping with the Provider API, unexpected behavior can occur.
  +Gradle emits a deprecation warning when a property in a task, extension or other domain object uses convention mapping with the Provider API.
  +
  +To fix this, the plugin that configures the convention mapping for the task, extension or domain object needs to be changed to use the Provider API only.
  +
  +[[jacoco_merge]]
  +==== JacocoMerge task type is deprecated
  +
  +The `JacocoMerge` task was used for merging coverage reports from different subprojects into a single report.
  +The same functionality is also available on the `JacocoReport` task.
  +Because of the duplication, `JacocoMerge` is now deprecated and scheduled for removal in Gradle 8.0.
  +
  +[[configuring_custom_build_layout]]
  +==== Setting custom build layout
  +
  +Command line options:
  +
  +* `-c`, `--settings-file` for specifying a custom settings file location
  +* `-b`, `--build-file` for specifying a custom build file location
  +
  +have been deprecated.
  +
  +Setting custom build file using
  +link:{groovyDslPath}/org.gradle.api.tasks.GradleBuild.html#org.gradle.api.tasks.GradleBuild:buildFile[buildFile]
  +property in link:{groovyDslPath}/org.gradle.api.tasks.GradleBuild.html[GradleBuild] task has been deprecated.
  +
  +Please use the link:{groovyDslPath}/org.gradle.api.tasks.GradleBuild.html#org.gradle.api.tasks.GradleBuild:dir[dir]
  +property instead to specify the root of the nested build.
  +Alternatively, consider using one of the recommended alternatives for
  +link:{groovyDslPath}/org.gradle.api.tasks.GradleBuild.html[GradleBuild] task as suggested in
  +<<authoring_maintainable_build_scripts#sec:avoiding_use_of_gradlebuild, Avoid using the GradleBuild task type>> section.
  +
  +Setting custom build layout using
  +link:{groovyDslPath}/org.gradle.StartParameter.html[StartParameter] methods
  +link:{groovyDslPath}/org.gradle.StartParameter.html#setBuildFile-java.io.File-[setBuildFile(File)]
  +and
  +link:{groovyDslPath}/org.gradle.StartParameter.html#setSettingsFile-java.io.File-[setSettingsFile(File)]
  +as well as the counterpart getters
  +link:{groovyDslPath}/org.gradle.StartParameter.html#getBuildFile--[getBuildFile()]
  +and
  +link:{groovyDslPath}/org.gradle.StartParameter.html#getSettingsFile--[getSettingsFile()]
  +have been deprecated.
  +
  +Please use standard locations for settings and build files:
  +
  +* settings file in the root of the build
  +* build file in the root of each subproject
  +
  +For the use case where custom settings or build files are used to model different behavior (similar to Maven profiles),
  +consider using <<build_environment#sec:gradle_system_properties, system properties>> with conditional logic.
  +For example, given a piece of code in either settings or build file:
  +```
  +if (System.getProperty("profile") == "custom") {
  +    println("custom profile")
  +} else {
  +    println("default profile")
  +}
  +```
  +You can pass the `profile` system property to Gradle using `gradle -Dprofile=custom` to execute the code in the `custom` profile branch.
  +
  +[[dependency_substitutions_with]]
  +==== Substitution.with replaced with Substitution.using
  +
  +<<resolution_rules#sec:dependency_substitution_rules, Dependency substitutions>> using `with` method have been deprecated
  +and are replaced with `using` method that also allows chaining.
  +For example, a dependency substitution rule `substitute(project(':a')).with(project(':b'))` should be replaced with
  +`substitute(project(':a')).using(project(':b'))`.
  +With chaining you can, for example, add a reason for a substitution like this:
  +`substitute(project(':a')).using(project(':b')).because("a reason")`.
  +
   [[java_exec_properties]]
   ==== Properties deprecated in JavaExec task
   
  
positive.code: link:{groovyDslPath}/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:includeFlat(java.lang.String&#91;&#93;)[Settings.includeFlat()] method.
  
  [[upload_task_deprecation]]
  === Deprecated `Upload` task
  
  Gradle used to have two ways of publishing artifacts.
  Now, the situation has been cleared and all build should use the `maven-publish` plugin.
  
negative.code: - Migrate custom source sets: link:https://github.com/gradle/gradle/pull/17149/files#diff-e159587e2f9aec398fa795b1d8b344f1593cb631e15e04893d31cdc9465f9781[gradle/gradle#17149].
  
  [[base_convention_deprecation]]
  ==== Deprecated `base` plugin conventions
  
  The convention properties contributed by the `base` plugin have been deprecated and scheduled for removal in Gradle 8.0.
  The conventions are replaced by the the `base { }` configuration block backed by link:{groovyDslPath}/org.gradle.api.plugins.BasePluginExtension.html[BasePluginExtension].
  