anchor.diff:  | `link:{javadocPath}/org/gradle/api/file/ArchiveOperations.html[ArchiveOperations].tarTree(path)`
   
   | `project.resources`
  -| [.red]#✖# Unsupported
  +| [.red]#✖# Not supported yet
   
   | `project.copySpec {}`
  -| [.red]#✖# Unsupported
  +| [.red]#✖# Not supported yet
   
   | `project.copy {}`
   | `link:{javadocPath}/org/gradle/api/file/FileSystemOperations.html[FileSystemOperations].copy {}`
  
positive.code: | `link:{javadocPath}/org/gradle/process/ExecOperations.html[ExecOperations].javaexec {}`
  
  | `project.ant {}`
  | [.red]#✖# Unsupported
  
  | `project.createAntBuilder()`
  | [.red]#✖# Unsupported
  
  |===
  
  
negative.code: A task must not use any `Project` objects at execution time.
  This includes calling `Task.getProject()` while the task is running.
  
  Most of the cases can be fixed in the same way as the previous requirement.
  
  Often, similar things are available on both `Project` and `Task`.
  For example if you need a `Logger` in your task actions you should use `Task.logger` instead of `Project.logger`.
  
  Otherwise, you can use <<custom_gradle_types#service_injection,injected services>> instead of the methods of `Project`.
  
  The following table shows what APIs or injected service should be used as a replacement for each of the `Project` methods.
  
  // TODO fully qualified javadoc links
  [cols="a,a",options="header"]
  |===
  | Instead of:
  | Use:
  
  | `project.rootDir`
  | A task property or script variable to capture the root directory.
  
  | `project.projectDir`
  | `link:{javadocPath}/org/gradle/api/file/ProjectLayout.html[ProjectLayout].projectDirectory`
  