It’d look something like
public class MyTask extends DefaultTask {
@Input
private final Property<String> property = getProject().getObjects().property(String)
public Property getProperty() {
return this.property;
}
@TaskAction
public void doStuff() {
String propertyValue = property.get();
// do stuff with propertyValue
}
}
public class MyPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
MyExtension extension = project.getExtensions().create("extension", MyExtension.class);
project.getTasks().register("myTask", MyTask.class).configure(task -> {
Callable<String> callable = () -> extension.property;
Provider<String> provider = project.getProviders().provider(callable);
task.getProperty().set(provider);
});
}
}