19
19
import org .gradle .api .file .ProjectLayout ;
20
20
import org .gradle .api .internal .ConventionTask ;
21
21
import org .gradle .api .model .ObjectFactory ;
22
+ import org .gradle .api .provider .ProviderFactory ;
22
23
import org .gradle .api .tasks .Input ;
23
24
import org .gradle .api .tasks .InputDirectory ;
24
25
import org .gradle .api .tasks .InputFiles ;
@@ -107,9 +108,12 @@ public void setOutputFile(File outputFile) {
107
108
private Configuration compileOnlyConfiguration ;
108
109
109
110
@ Inject
110
- public DependenciesInfoTask (ProjectLayout projectLayout , ObjectFactory objectFactory ) {
111
+ public DependenciesInfoTask (ProjectLayout projectLayout , ObjectFactory objectFactory , ProviderFactory providerFactory ) {
111
112
this .licensesDir = objectFactory .directoryProperty ();
112
- this .licensesDir .set (projectLayout .getProjectDirectory ().dir ("licenses" ));
113
+ this .licensesDir .convention (
114
+ providerFactory .provider (() -> projectLayout .getProjectDirectory ().dir ("licenses" ))
115
+ .map (dir -> dir .getAsFile ().exists () ? dir : null )
116
+ );
113
117
this .outputFile = projectLayout .getBuildDirectory ().dir ("reports/dependencies" ).get ().file ("dependencies.csv" ).getAsFile ();
114
118
setDescription ("Create a CSV file with dependencies information." );
115
119
}
@@ -211,15 +215,14 @@ protected String getLicenseType(final String group, final String name) throws IO
211
215
}
212
216
213
217
protected File getDependencyInfoFile (final String group , final String name , final String infoFileSuffix ) {
214
- File licenseDirFile = licensesDir .getAsFile ().get ();
215
- java .util .Optional <File > license = licenseDirFile .exists ()
216
- ? Arrays .stream (licenseDirFile .listFiles ((dir , fileName ) -> Pattern .matches (".*-" + infoFileSuffix + ".*" , fileName )))
217
- .filter (file -> {
218
- String prefix = file .getName ().split ("-" + infoFileSuffix + ".*" )[0 ];
219
- return group .contains (prefix ) || name .contains (prefix );
220
- })
221
- .findFirst ()
222
- : java .util .Optional .empty ();
218
+ java .util .Optional <File > license = licensesDir .map (
219
+ licenseDir -> Arrays .stream (
220
+ licenseDir .getAsFile ().listFiles ((dir , fileName ) -> Pattern .matches (".*-" + infoFileSuffix + ".*" , fileName ))
221
+ ).filter (file -> {
222
+ String prefix = file .getName ().split ("-" + infoFileSuffix + ".*" )[0 ];
223
+ return group .contains (prefix ) || name .contains (prefix );
224
+ }).findFirst ()
225
+ ).get ();
223
226
224
227
return license .orElseThrow (
225
228
() -> new IllegalStateException (
@@ -230,7 +233,7 @@ protected File getDependencyInfoFile(final String group, final String name, fina
230
233
+ ":"
231
234
+ name
232
235
+ " in "
233
- + licenseDirFile . getAbsolutePath ()
236
+ + licensesDir . getAsFile (). getOrNull ()
234
237
)
235
238
);
236
239
}
0 commit comments