anchor.diff:  
   The Java plugin adds a number of tasks to your project, as shown below.
   
  -`compileJava(type: api:org.gradle.api.tasks.compile.JavaCompile[])`::
  -_Compiles production Java source files using javac._ Depends on all tasks which produce the compile classpath. This includes the `jar` task for project dependencies included in the `compile` configuration.
  -
  -`processResources(type: api:org.gradle.api.tasks.Copy[])`::
  -_Copies production resources into the production resources directory._
  -
  -`classes(type: api:org.gradle.api.Task[])`::
  -_Assembles the production classes and resources directories._
  -
  -`compileTestJava(type: api:org.gradle.api.tasks.compile.JavaCompile[])`::
  -_Compiles test Java source files using javac._ Depends on `compile`, plus all tasks which produce the test compile classpath.
  -
  -`processTestResources(type: api:org.gradle.api.tasks.Copy[])`::
  -_Copies test resources into the test resources directory._
  -
  -`testClasses(type: api:org.gradle.api.Task[])`::
  -_Assembles the test classes and resources directories._ Depends on `compileTestJava` task and `processTestResources` task. Some plugins add additional test compilation tasks.
  -
  -`jar(type: api:org.gradle.api.tasks.bundling.Jar[])`::
  -_Assembles the JAR file._ Depends on `compile`.
  -
  -`javadoc(type: api:org.gradle.api.tasks.javadoc.Javadoc[])`::
  -_Generates API documentation for the production Java source, using Javadoc_. Depends on `compile`.
  -
  -`test(type: api:org.gradle.api.tasks.testing.Test[])`::
  -_Runs the unit tests using JUnit or TestNG._ Depends on `compile`, `compileTest`, plus all tasks which produce the test runtime classpath.
  -
  -`uploadArchives(type: api:org.gradle.api.tasks.Upload[])`::
  -_Uploads artifacts in the `archives` configuration, including the JAR file._ Depends on the tasks which produce the artifacts in the `archives` configuration, including `jar`.
  -
  -`clean(type: api:org.gradle.api.tasks.Delete[])`::
  -_Deletes the project build directory._
  -
  -`clean__TaskName__(type: api:org.gradle.api.tasks.Delete[])`::
  -_Deletes files created by specified task. `cleanJar` will delete the JAR file created by the `jar` task, and `cleanTest` will delete the test results created by the `test` task._
  -
  -For each source set you add to the project, the Java plugin adds the following compilation tasks:
  +`compileJava` — type: api:org.gradle.api.tasks.compile.JavaCompile[]::
  +_Depends on_: All tasks which contribute to the compilation classpath, including `jar` tasks from projects that are on the classpath via project dependencies
  ++
  +Compiles production Java source files using the JDK compiler.
  +
  +`processResources` — type: api:org.gradle.api.tasks.Copy[]::
  +Copies production resources into the production resources directory.
  +
  +`classes`::
  +_Depends on_: `compileJava`, `processResources`
  ++
  +This is an aggregate task that just depends on other tasks. Other plugins may attach additional compilation tasks to it.
  +
  +`compileTestJava` — type: api:org.gradle.api.tasks.compile.JavaCompile[]::
  +_Depends on_: `classes`, and all tasks that contribute to the test compilation classpath
  ++
  +Compiles test Java source files using the JDK compiler.
  +
  +`processTestResources` — type: api:org.gradle.api.tasks.Copy[]::
  +Copies test resources into the test resources directory.
  +
  +`testClasses`::
  +_Depends on_: `compileTestJava`, `processTestResources`
  ++
  +This is an aggregate task that just depends on other tasks. Other plugins may attach additional test compilation tasks to it.
  +
  +`jar` — type: api:org.gradle.api.tasks.bundling.Jar[]::
  +_Depends on_: `classes`
  ++
  +Assembles the production JAR file, based on the classes and resources attached to the `main` source set.
  +
  +`javadoc` — type: api:org.gradle.api.tasks.javadoc.Javadoc[]::
  +_Depends on_: `classes`
  ++
  +Generates API documentation for the production Java source using Javadoc. 
  +
  +`test` — type: api:org.gradle.api.tasks.testing.Test[]::
  +_Depends on_: `testClasses`, and all tasks which produce the test runtime classpath
  ++
  +Runs the unit tests using JUnit or TestNG.
  +
  +`uploadArchives` — type: api:org.gradle.api.tasks.Upload[]::
  +_Depends on_: `jar`, and any other task that produces an artifact attached to the `archives` configuration
  ++
  +Uploads artifacts in the `archives` configuration — including the production JAR file — to the configured repositories.
  +
  +`clean` — type: api:org.gradle.api.tasks.Delete[]::
  +Deletes the project build directory.
  +
  +`clean__TaskName__` — type: api:org.gradle.api.tasks.Delete[]::
  +Deletes files created by the specified task. For example, `cleanJar` will delete the JAR file created by the `jar` task and `cleanTest` will delete the test results created by the `test` task.
   
   [[java_source_set_tasks]]
   ==== SourceSet Tasks
   
  -`compile__SourceSet__Java(type: api:org.gradle.api.tasks.compile.JavaCompile[])`::
  -_Compiles the given source set's Java source files using javac._ Depends on all tasks which produce the source set's compile classpath.
  -
  -`process__SourceSet__Resources(type: api:org.gradle.api.tasks.Copy[])`::
  -_Copies the given source set's resources into the resources directory._
  -
  -`__sourceSet__Classes(type: api:org.gradle.api.Task[])`::
  -_Assembles the given source set's classes and resources directories._ Depends on the `compile__SourceSet__Java` task and the `process__SourceSet__Resources` task. Some plugins add additional compilation tasks for the source set.
  +For each source set you add to the project, the Java plugin adds the following tasks:
  +
  +
  +`compile__SourceSet__Java` — type: api:org.gradle.api.tasks.compile.JavaCompile[]::
  +_Depends on_: All tasks which contribute to the source set's compilation classpath
  ++
  +Compiles the given source set's Java source files using the JDK compiler.
  +
  +`process__SourceSet__Resources` — type: api:org.gradle.api.tasks.Copy[]::
  +Copies the given source set's resources into the resources directory.
  +
  +`__sourceSet__Classes` — type: api:org.gradle.api.Task[]::
  +_Depends on_: `compile__SourceSet__Java`, `process__SourceSet__Resources`
  ++
  +Prepares the given source set's classes and resources for packaging and execution. Some plugins may add additional compilation tasks for the source set.
   
   ==== Lifecycle Tasks
  -The Java plugin also adds a number of tasks which form a lifecycle for the project:
  -
  -`assemble(type: api:org.gradle.api.Task[])`::
  -_Assembles all the archives in the project._ Depends on all archive tasks in the project, including `jar`. Some plugins add additional archive tasks to the project.
  -
  -`check(type: api:org.gradle.api.Task[])`::
  -_Performs all verification tasks in the project._ Depends on all verification tasks in the project, including `test`. Some plugins add additional verification tasks to the project.
  -
  -`build(type: api:org.gradle.api.Task[])`::
  -_Performs a full build of the project._ Depends on `check` and `assemble`.
  -
  -`buildNeeded(type: api:org.gradle.api.Task[])`::
  -_Performs a full build of the project and all projects it depends on._ Depends on `build` and `buildNeeded` tasks in all project lib dependencies of the `testRuntime` configuration.
  -
  -`buildDependents(type: api:org.gradle.api.Task[])`::
  -_Performs a full build of the project and all projects which depend on it._ Depends on `build` and `buildDependents` tasks in all projects with a project lib dependency on this project in a `testRuntime` configuration.
  -
  -`build__ConfigName__(type: api:org.gradle.api.Task[])`::
  -_Assembles the artifacts in the specified configuration. The task is added by the Base plugin which is implicitly applied by the Java plugin._ Depends on the tasks which produce the artifacts in configuration __ConfigName__.
  -
  -`upload__ConfigName__(type: api:org.gradle.api.tasks.Upload[])`::
  -_Assembles and uploads the artifacts in the specified configuration. The task is added by the Base plugin which is implicitly applied by the Java plugin._ Depends on the tasks which uploads the artifacts in configuration __ConfigName__.
  +
  +The Java plugin attaches some of its tasks to the lifecycle tasks defined by the <<sec:base_tasks,Base Plugin>> — which the Java Plugin applies automatically — and it also adds a few other lifecycle tasks:
  +
  +`assemble`::
  +_Depends on_: `jar`, and all other tasks that create artifacts attached to the `archives` configuration
  ++
  +Aggregate task that assembles all the archives in the project. This task is added by the Base Plugin.
  +
  +`check`::
  +_Depends on_: `test`
  ++
  +Aggregate task that performs verification tasks, such as running the tests. Some plugins add their own verification tasks to `check`. You should also attach any custom `Test` tasks to this lifecycle task if you want them to execute for a full build. This task is added by the Base Plugin.
  +
  +`build`::
  +_Depends on_: `check`, `assemble`
  ++
  +Aggregate tasks that performs a full build of the project. This task is added by the Base Plugin.
  +
  +`buildNeeded`::
  +_Depends on_: `build`, and `buildNeeded` tasks in all projects that are dependencies in the `testRuntimeClasspath` configuration.
  ++
  +Performs a full build of the project and all projects it depends on. 
  +
  +`buildDependents`::
  +_Depends on_: `build`, and `buildDependents` tasks in all projects that have this project as a dependency in theeir `testRuntimeClasspath` configurations
  ++
  +Performs a full build of the project and all projects which depend upon it.
  +
  +`build__ConfigName__` — _task rule_::
  +_Depends on_: all tasks that generate the artifacts attached to the named — _ConfigName_ — configuration
  ++
  +Assembles the artifacts for the specified configuration. This rule is added by the Base Plugin.
  +
  +`upload__ConfigName__` — _task rule_, type: api:org.gradle.api.tasks.Upload[]::
  +_Depends on_: all tasks that generate the artifacts attached to the named — _ConfigName_ — configuration
  ++
  +Assembles and uploads the artifacts in the specified configuration. This rule is added by the Base Plugin.
   
   The following diagram shows the relationships between these tasks.
   
  
positive.code: If the source file is deleted, the generated file is deleted.
  
  ====== Aggregating annotation processors
  These aggregate several source files into one ore more output files or validation messages.
  For instance, a `ServiceRegistryProcessor` could create a single `ServiceRegistry` with one method for each type annotated with `@Service`
  
  
negative.code: ==== Directory properties
  
  `String reporting.baseDir`::
  The name of the directory to generate reports into, relative to the build directory. Default value: `reports`
  
  `(read-only) File reportsDir`::
  The directory to generate reports into. Default value: `__buildDir__/__reporting.baseDir__`
  
  `String testResultsDirName`::
  The name of the directory to generate test result .xml files into, relative to the build directory. Default value: `test-results`
  
  `(read-only) File testResultsDir`::
  The directory to generate test result .xml files into. Default value: `__buildDir__/__testResultsDirName__`
  
  `String testReportDirName`::
  The name of the directory to generate the test report into, relative to the reports directory. Default value: `tests`
  
  `(read-only) File testReportDir`::
  The directory to generate the test report into. Default value: `__reportsDir__/testReportDirName`
  
  `String libsDirName`::
  The name of the directory to generate libraries into, relative to the build directory. Default value: `libs`
  
  `(read-only) File libsDir`::
  The directory to generate libraries into. Default value: `__buildDir__/__libsDirName__`
  
  `String distsDirName`::
  The name of the directory to generate distributions into, relative to the build directory. Default value: `distributions`
  
  `(read-only) File distsDir`::
  The directory to generate distributions into. Default value: `__buildDir__/__distsDirName__`
  
  `String docsDirName`::
  The name of the directory to generate documentation into, relative to the build directory. Default value: `docs`
  
  `(read-only) File docsDir`::
  The directory to generate documentation into. Default value: `__buildDir__/__docsDirName__`
  
  `String dependencyCacheDirName`::
  The name of the directory to use to cache source dependency information, relative to the build directory. Default value: `dependency-cache`
  
  ==== Other convention properties
  
  `(read-only) api:org.gradle.api.tasks.SourceSetContainer[] sourceSets`::
  Contains the project's source sets. Default value: Not null api:org.gradle.api.tasks.SourceSetContainer[]
  
  `api:org.gradle.api.JavaVersion[] sourceCompatibility`::
  Java version compatibility to use when compiling Java source. Default value: version of the current JVM in use api:org.gradle.api.JavaVersion[]. Can also set using a String or a Number, e.g. `'1.5'` or `1.5`.
  
  `api:org.gradle.api.JavaVersion[] targetCompatibility`::
  Java version to generate classes for. Default value: `__sourceCompatibility__`. Can also set using a String or Number, e.g. `'1.5'` or `1.5`.
  
  `String archivesBaseName`::
  The basename to use for archives, such as JAR or ZIP files. Default value: `__projectName__`
  
  `api:org.gradle.api.java.archives.Manifest[] manifest`::
  The manifest to include in all JAR files. Default value: an empty manifest.
  
  These properties are provided by convention objects of type api:org.gradle.api.plugins.JavaPluginConvention[], and api:org.gradle.api.plugins.BasePluginConvention[].
  
  