anchor.diff:  | <<configuration_cache#undeclared_gradle_prop_read, Value providers for Gradle properties>>
   
   | `project.logger`
  -| `link:{javadocPath}/org/gradle/api/Task.html[Task].logger`
  +| link:{javadocPath}/org/gradle/api/Task.html#getLogger--[Task.logger]
   
   | `project.provider {}`
  -| `link:{javadocPath}/org/gradle/api/provider/ProviderFactory.html[ProviderFactory].provider {}`
  +| link:{javadocPath}/org/gradle/api/provider/ProviderFactory.html#provider-java.util.concurrent.Callable-[ProviderFactory.provider {}]
   
   | `project.file(path)`
  -| `link:{javadocPath}/org/gradle/api/file/ProjectLayout.html[ProjectLayout].projectDirectory.file(path)` or `link:{javadocPath}/org/gradle/api/file/ProjectLayout.html[ProjectLayout].buildDirectory.file(path)`
  +| link:{javadocPath}/org/gradle/api/file/ProjectLayout.html#getProjectDirectory--[ProjectLayout.projectDirectory].link:{javadocPath}/org/gradle/api/file/Directory.html#file-java.lang.String-[file(path)] or link:{javadocPath}/org/gradle/api/file/ProjectLayout.html#getBuildDirectory--[ProjectLayout.buildDirectory].link:{javadocPath}/org/gradle/api/file/DirectoryProperty.html#file-java.lang.String-[file(path)]
   
   | `project.uri(path)`
   | [.red]#✖# Not supported yet
   
   | `project.relativePath(path)`
  -| `ProjectLayout.projectDirectory.file(path)`
  +| link:{javadocPath}/org/gradle/api/file/ProjectLayout.html#getProjectDirectory--[ProjectLayout.projectDirectory].link:{javadocPath}/org/gradle/api/file/Directory.html#file-java.lang.String-[file(path)]
   
   | `project.files(paths)`
  -| `link:{javadocPath}/org/gradle/api/model/ObjectFactory.html[ObjectFactory].fileCollection().from(paths)`
  +| link:{javadocPath}/org/gradle/api/model/ObjectFactory.html#fileCollection--[ObjectFactory.fileCollection()].link:{javadocPath}/org/gradle/api/file/ConfigurableFileCollection.html#from-java.lang.Object...-[from(paths)]
   
   | `project.fileTree(paths)`
  -| `link:{javadocPath}/org/gradle/api/model/ObjectFactory.html[ObjectFactory].fileTree().from(dir)`
  +| link:{javadocPath}/org/gradle/api/model/ObjectFactory.html#fileTree--[ObjectFactory.fileTree()].link:{javadocPath}/org/gradle/api/file/ConfigurableFileTree.html#from-java.lang.Object-[from(dir)]
   
   | `project.zipTree(path)`
  -| `link:{javadocPath}/org/gradle/api/file/ArchiveOperations.html[ArchiveOperations].zipTree(path)`
  +| link:{javadocPath}/org/gradle/api/file/ArchiveOperations.html#zipTree-java.lang.Object-[ArchiveOperations.zipTree(path)]
   
   | `project.tarTree(path)`
  -| `link:{javadocPath}/org/gradle/api/file/ArchiveOperations.html[ArchiveOperations].tarTree(path)`
  +| link:{javadocPath}/org/gradle/api/file/ArchiveOperations.html#tarTree-java.lang.Object-[ArchiveOperations.tarTree(path)]
   
   | `project.resources`
   | [.red]#✖# Not supported yet
  
positive.code: | A task property or script variable to capture the root directory.
  
  | `project.projectDir`
  | `link:{javadocPath}/org/gradle/api/file/ProjectLayout.html[ProjectLayout].projectDirectory`
  
  | `project.buildDir`
  | `link:{javadocPath}/org/gradle/api/file/ProjectLayout.html[ProjectLayout].buildDirectory`
  
  | `project.name`
  | A task property or script variable to capture the project name.
  
negative.code: 
  Otherwise, you can use <<custom_gradle_types#service_injection,injected services>> instead of the methods of `Project`.
  
  // TODO snippet with a task type
  // TODO snippet with a doLast closure
  
  The following table shows what APIs or injected service should be used as a replacement for each of the `Project` methods.
  
  [cols="a,a",options="header"]
  |===
  | Instead of:
  