# Annotation Interface CompileClasspath

@Documented @Retention(RUNTIME) @Target({METHOD,FIELD}) @Incubating public @interface CompileClasspath

Marks a property as specifying a Java compile classpath for a task. Attaching this annotation to a property means that changes that do not affect the API of the classes in classpath will be ignored. The following kinds of changes to the classpath will be ignored:

- Changes to the path of jar or top level directories.
- Changes to timestamps and the order of entries in Jars.
- Changes to resources and Jar manifests, including adding or removing resources.
- Changes to private class elements, such as private fields, methods and inner classes.
- Changes to code, such as method bodies, static initializers and field initializers (except for constants).
- Changes to debug information, for example when a change to a comment affects the line numbers in class debug information.
- Changes to directories, including directory entries in Jars.

This annotation should be attached to the getter method in Java or the property in Groovy. Annotations on setters or just the field in Java are ignored.

Note: to stay compatible with versions prior to Gradle 3.4, classpath properties need to be annotated with @`InputFiles` as well.

Since:
  3.4