2

Gradle documentation states that using the getProject() method in the @TaskAction method of a Task class should not be used if you want compatibility with Gradle Configuration Cache. The question I have is that, suppose you have something like this:

public abstract class AbstractMyTask extends DefaultTask {
    @Internal
    protected abstract DirectoryProperty getRootDirectory();
    
    protected AbstractMyTask() {
        getRootDirectory().convention(getProject().getRootProject().getLayout().getProjectDirectory());
    }
}

The general intent of the code snippet is to have a Directory property representing the root project directory (ie. a safe replacement for getProject().getRootDir()), and it seems like the getProject() call in the constructor would be okay. I'd like some sober second thought on whether that is the case.

Kelvin Chung
  • 1,327
  • 1
  • 11
  • 23

0 Answers0