1919import org .gradle .api .file .ProjectLayout ;
2020import org .gradle .api .internal .ConventionTask ;
2121import org .gradle .api .model .ObjectFactory ;
22+ import org .gradle .api .provider .ProviderFactory ;
2223import org .gradle .api .tasks .Input ;
2324import org .gradle .api .tasks .InputDirectory ;
2425import org .gradle .api .tasks .InputFiles ;
@@ -107,9 +108,12 @@ public void setOutputFile(File outputFile) {
107108 private Configuration compileOnlyConfiguration ;
108109
109110 @ Inject
110- public DependenciesInfoTask (ProjectLayout projectLayout , ObjectFactory objectFactory ) {
111+ public DependenciesInfoTask (ProjectLayout projectLayout , ObjectFactory objectFactory , ProviderFactory providerFactory ) {
111112 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+ );
113117 this .outputFile = projectLayout .getBuildDirectory ().dir ("reports/dependencies" ).get ().file ("dependencies.csv" ).getAsFile ();
114118 setDescription ("Create a CSV file with dependencies information." );
115119 }
@@ -211,15 +215,14 @@ protected String getLicenseType(final String group, final String name) throws IO
211215 }
212216
213217 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 ();
223226
224227 return license .orElseThrow (
225228 () -> new IllegalStateException (
@@ -230,7 +233,7 @@ protected File getDependencyInfoFile(final String group, final String name, fina
230233 + ":"
231234 + name
232235 + " in "
233- + licenseDirFile . getAbsolutePath ()
236+ + licensesDir . getAsFile (). getOrNull ()
234237 )
235238 );
236239 }
0 commit comments