1515 */
1616package com .diffplug .gradle .spotless ;
1717
18+ import java .lang .reflect .Method ;
19+
20+ import javax .annotation .Nonnull ;
21+
1822import org .gradle .api .GradleException ;
1923import org .gradle .api .JavaVersion ;
2024import org .gradle .api .Plugin ;
2125import org .gradle .api .Project ;
2226import org .gradle .api .plugins .BasePlugin ;
27+ import org .gradle .api .provider .Provider ;
2328import org .gradle .util .GradleVersion ;
2429
2530import com .diffplug .spotless .Jvm ;
@@ -42,7 +47,9 @@ public void apply(Project project) {
4247 + "https://docs.gradle.org/current/userguide/building_java_projects.html#sec:java_cross_compilation" );
4348 }
4449 // if -PspotlessModern=true, then use the modern stuff instead of the legacy stuff
45- if (project .getProviders ().gradleProperty (SPOTLESS_MODERN ).isPresent ()) {
50+ Provider <String > spotlessModernProperty = safeForUseAtConfigurationTime (
51+ project .getProviders ().gradleProperty (SPOTLESS_MODERN ));
52+ if (spotlessModernProperty .isPresent ()) {
4653 project .getLogger ().warn ("'spotlessModern' has no effect as of Spotless 5.0, recommend removing it." );
4754 }
4855 // make sure there's a `clean` and a `check`
@@ -64,4 +71,15 @@ public void apply(Project project) {
6471 static String capitalize (String input ) {
6572 return Character .toUpperCase (input .charAt (0 )) + input .substring (1 );
6673 }
74+
75+ static <T > Provider <T > safeForUseAtConfigurationTime (@ Nonnull Provider <T > provider ) {
76+ try {
77+ Method method = Provider .class .getMethod ("forUseAtConfigurationTime" );
78+ @ SuppressWarnings ("unchecked" )
79+ Provider <T > configuredProvider = (Provider <T >) method .invoke (provider );
80+ return configuredProvider ;
81+ } catch (ReflectiveOperationException e ) {
82+ return provider ;
83+ }
84+ }
6785}
0 commit comments