1
1
/*
2
- * Copyright 2017-2021 the original author or authors.
2
+ * Copyright 2017-2022 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
24
24
import org .gradle .api .plugins .JavaBasePlugin ;
25
25
import org .gradle .api .plugins .JavaPluginConvention ;
26
26
import org .gradle .api .tasks .SourceSet ;
27
+ import org .gradle .api .tasks .TaskContainer ;
28
+ import org .gradle .api .tasks .TaskProvider ;
27
29
28
30
import io .spring .javaformat .gradle .tasks .CheckFormat ;
29
31
import io .spring .javaformat .gradle .tasks .Format ;
33
35
* Spring Format Gradle Plugin.
34
36
*
35
37
* @author Phillip Webb
38
+ * @author Andy Wilkinson
36
39
*/
37
40
public class SpringJavaFormatPlugin implements Plugin <Project > {
38
41
@@ -46,34 +49,37 @@ public void apply(Project project) {
46
49
47
50
private void addSourceTasks () {
48
51
this .project .getPlugins ().withType (JavaBasePlugin .class , (plugin ) -> {
49
- Task formatAll = this .project .task (Format .NAME );
50
- formatAll .setDescription (Format .DESCRIPTION );
51
- Task checkAll = this .project .task (CheckFormat .NAME );
52
- checkAll .setDescription (CheckFormat .DESCRIPTION );
53
- this .project .getTasks ().getByName (JavaBasePlugin .CHECK_TASK_NAME ).dependsOn (checkAll );
52
+ TaskContainer tasks = this .project .getTasks ();
53
+ TaskProvider <Task > formatAllProvider = tasks .register (Format .NAME );
54
+ formatAllProvider .configure ((formatAll ) -> formatAll .setDescription (Format .DESCRIPTION ));
55
+ TaskProvider <Task > checkAllProvider = tasks .register (CheckFormat .NAME );
56
+ checkAllProvider .configure ((checkAll ) -> checkAll .setDescription (CheckFormat .DESCRIPTION ));
57
+ tasks .named (JavaBasePlugin .CHECK_TASK_NAME ).configure ((check ) -> check .dependsOn (checkAllProvider ));
54
58
this .project .getConvention ().getPlugin (JavaPluginConvention .class ).getSourceSets ()
55
- .all ((sourceSet ) -> addSourceTasks (sourceSet , checkAll , formatAll ));
59
+ .all ((sourceSet ) -> addSourceTasks (sourceSet , checkAllProvider , formatAllProvider ));
56
60
});
57
61
}
58
62
59
- private void addSourceTasks (SourceSet sourceSet , Task checkAll , Task formatAll ) {
60
- CheckFormat checkTask = addFormatterTask (sourceSet , CheckFormat .class , CheckFormat .NAME ,
63
+ private void addSourceTasks (SourceSet sourceSet , TaskProvider < Task > checkAllProvider , TaskProvider < Task > formatAllProvider ) {
64
+ TaskProvider < CheckFormat > checkTaskProvider = addFormatterTask (sourceSet , CheckFormat .class , CheckFormat .NAME ,
61
65
CheckFormat .DESCRIPTION );
62
- checkTask .setReportLocation (
63
- new File (this .project .getBuildDir (), "reports/format/" + sourceSet .getName () + "/check-format.txt" ));
64
- checkAll .dependsOn (checkTask );
65
- Format formatSourceSet = addFormatterTask (sourceSet , Format .class , Format .NAME , Format .DESCRIPTION );
66
- formatSourceSet . conventionMapping ("encoding" , () -> "UTF-8" );
67
- formatAll .dependsOn (formatSourceSet );
66
+ checkTaskProvider . configure (( checkTask ) -> checkTask .setReportLocation (
67
+ new File (this .project .getBuildDir (), "reports/format/" + sourceSet .getName () + "/check-format.txt" ))) ;
68
+ checkAllProvider . configure (( checkAll ) -> checkAll .dependsOn (checkTaskProvider ) );
69
+ TaskProvider < Format > formatTaskProvider = addFormatterTask (sourceSet , Format .class , Format .NAME , Format .DESCRIPTION );
70
+ formatTaskProvider . configure (( format ) -> format . conventionMapping ("encoding" , () -> "UTF-8" ) );
71
+ formatAllProvider . configure (( formatAll ) -> formatAll .dependsOn (formatTaskProvider ) );
68
72
}
69
73
70
- private <T extends FormatterTask > T addFormatterTask (SourceSet sourceSet , Class <T > taskType , String name ,
74
+ private <T extends FormatterTask > TaskProvider < T > addFormatterTask (SourceSet sourceSet , Class <T > taskType , String name ,
71
75
String desc ) {
72
76
String taskName = sourceSet .getTaskName (name , null );
73
- T task = this .project .getTasks ().create (taskName , taskType );
74
- task .setDescription (desc + " for " + sourceSet .getName ());
75
- task .setSource (sourceSet .getAllJava ());
76
- return task ;
77
+ TaskProvider <T > provider = this .project .getTasks ().register (taskName , taskType );
78
+ provider .configure ((task ) -> {
79
+ task .setDescription (desc + " for " + sourceSet .getName ());
80
+ task .setSource (sourceSet .getAllJava ());
81
+ });
82
+ return provider ;
77
83
}
78
84
79
85
}
0 commit comments