Move NoHttp config to Gradle conventions

See gh-30339
This commit is contained in:
Brian Clozel
2023-04-14 12:31:43 +02:00
parent a66f3e02f4
commit da88ac8cca
3 changed files with 28 additions and 23 deletions

View File

@@ -17,7 +17,8 @@
package org.springframework.build;
import io.spring.javaformat.gradle.SpringJavaFormatPlugin;
import io.spring.javaformat.gradle.tasks.Format;
import io.spring.nohttp.gradle.NoHttpExtension;
import io.spring.nohttp.gradle.NoHttpPlugin;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.DependencySet;
@@ -26,6 +27,9 @@ import org.gradle.api.plugins.quality.Checkstyle;
import org.gradle.api.plugins.quality.CheckstyleExtension;
import org.gradle.api.plugins.quality.CheckstylePlugin;
import java.nio.file.Path;
import java.util.List;
/**
* {@link Plugin} that applies conventions for checkstyle.
* @author Brian Clozel
@@ -38,6 +42,9 @@ public class CheckstyleConventions {
*/
public void apply(Project project) {
project.getPlugins().withType(JavaBasePlugin.class, (java) -> {
if (project.getRootProject() == project) {
configureNoHttpPlugin(project);
}
project.getPlugins().apply(CheckstylePlugin.class);
project.getTasks().withType(Checkstyle.class).forEach(checkstyle -> checkstyle.getMaxHeapSize().set("1g"));
CheckstyleExtension checkstyle = project.getExtensions().getByType(CheckstyleExtension.class);
@@ -50,4 +57,20 @@ public class CheckstyleConventions {
});
}
private static void configureNoHttpPlugin(Project project) {
project.getPlugins().apply(NoHttpPlugin.class);
NoHttpExtension noHttp = project.getExtensions().getByType(NoHttpExtension.class);
noHttp.setAllowlistFile(project.file("src/nohttp/allowlist.lines"));
noHttp.getSource().exclude("**/test-output/**", "**/.settings/**",
"**/.classpath", "**/.project");
List<String> buildFolders = List.of("bin", "build", "out");
project.allprojects(subproject -> {
Path rootPath = project.getRootDir().toPath();
Path projectPath = rootPath.relativize(subproject.getProjectDir().toPath());
for (String buildFolder : buildFolders) {
noHttp.getSource().exclude(projectPath.resolve(buildFolder).resolve("**").toString());
}
});
}
}