Upgrade build to Gradle 8.10
Closes gh-41980
This commit is contained in:
@@ -19,10 +19,8 @@ package org.springframework.boot.gradle.plugin;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.StringWriter;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import org.gradle.api.Action;
|
||||
import org.gradle.api.GradleException;
|
||||
import org.gradle.api.Plugin;
|
||||
import org.gradle.api.Project;
|
||||
@@ -128,32 +126,16 @@ final class ApplicationPluginAction implements PluginApplicationAction {
|
||||
|
||||
private void configureFilePermissions(CopySpec copySpec, int mode) {
|
||||
if (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0) {
|
||||
try {
|
||||
Method filePermissions = copySpec.getClass().getMethod("filePermissions", Action.class);
|
||||
filePermissions.invoke(copySpec, new Action<>() {
|
||||
|
||||
@Override
|
||||
public void execute(Object filePermissions) {
|
||||
String unixPermissions = Integer.toString(mode, 8);
|
||||
try {
|
||||
Method unix = filePermissions.getClass().getMethod("unix", String.class);
|
||||
unix.invoke(filePermissions, unixPermissions);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new GradleException("Failed to set file permissions to '" + unixPermissions + "'",
|
||||
ex);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new GradleException("Failed to set file permissions", ex);
|
||||
}
|
||||
copySpec.filePermissions((filePermissions) -> filePermissions.unix(Integer.toString(mode, 8)));
|
||||
}
|
||||
else {
|
||||
copySpec.setFileMode(mode);
|
||||
configureFileMode(copySpec, mode);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private void configureFileMode(CopySpec copySpec, int mode) {
|
||||
copySpec.setFileMode(mode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,9 +26,8 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.gradle.api.GradleException;
|
||||
import org.gradle.api.file.ConfigurableFilePermissions;
|
||||
import org.gradle.api.file.CopySpec;
|
||||
import org.gradle.api.file.FileCopyDetails;
|
||||
import org.gradle.api.file.FileTreeElement;
|
||||
@@ -133,8 +132,8 @@ class BootArchiveSupport {
|
||||
File output = jar.getArchiveFile().get().getAsFile();
|
||||
Manifest manifest = jar.getManifest();
|
||||
boolean preserveFileTimestamps = jar.isPreserveFileTimestamps();
|
||||
Integer dirMode = getDirMode(jar);
|
||||
Integer fileMode = getFileMode(jar);
|
||||
Integer dirPermissions = getUnixNumericDirPermissions(jar);
|
||||
Integer filePermissions = getUnixNumericFilePermissions(jar);
|
||||
boolean includeDefaultLoader = isUsingDefaultLoader(jar);
|
||||
Spec<FileTreeElement> requiresUnpack = this.requiresUnpack.getAsSpec();
|
||||
Spec<FileTreeElement> exclusions = this.exclusions.getAsExcludeSpec();
|
||||
@@ -142,35 +141,35 @@ class BootArchiveSupport {
|
||||
Spec<FileCopyDetails> librarySpec = this.librarySpec;
|
||||
Function<FileCopyDetails, ZipCompression> compressionResolver = this.compressionResolver;
|
||||
String encoding = jar.getMetadataCharset();
|
||||
CopyAction action = new BootZipCopyAction(output, manifest, preserveFileTimestamps, dirMode, fileMode,
|
||||
includeDefaultLoader, jarmodeToolsLocation, requiresUnpack, exclusions, launchScript, librarySpec,
|
||||
compressionResolver, encoding, resolvedDependencies, supportsSignatureFile, layerResolver,
|
||||
CopyAction action = new BootZipCopyAction(output, manifest, preserveFileTimestamps, dirPermissions,
|
||||
filePermissions, includeDefaultLoader, jarmodeToolsLocation, requiresUnpack, exclusions, launchScript,
|
||||
librarySpec, compressionResolver, encoding, resolvedDependencies, supportsSignatureFile, layerResolver,
|
||||
loaderImplementation);
|
||||
return jar.isReproducibleFileOrder() ? new ReproducibleOrderingCopyAction(action) : action;
|
||||
}
|
||||
|
||||
private Integer getUnixNumericDirPermissions(CopySpec copySpec) {
|
||||
return (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0)
|
||||
? asUnixNumeric(copySpec.getDirPermissions()) : getDirMode(copySpec);
|
||||
}
|
||||
|
||||
private Integer getUnixNumericFilePermissions(CopySpec copySpec) {
|
||||
return (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0)
|
||||
? asUnixNumeric(copySpec.getFilePermissions()) : getFileMode(copySpec);
|
||||
}
|
||||
|
||||
private Integer asUnixNumeric(Property<ConfigurableFilePermissions> permissions) {
|
||||
return permissions.isPresent() ? permissions.get().toUnixNumeric() : null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private Integer getDirMode(CopySpec copySpec) {
|
||||
return getMode(copySpec, "getDirPermissions", () -> copySpec.getDirMode());
|
||||
return copySpec.getDirMode();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private Integer getFileMode(CopySpec copySpec) {
|
||||
return getMode(copySpec, "getFilePermissions", () -> copySpec.getFileMode());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Integer getMode(CopySpec copySpec, String methodName, Supplier<Integer> fallback) {
|
||||
if (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0) {
|
||||
try {
|
||||
Object filePermissions = ((Property<Object>) copySpec.getClass().getMethod(methodName).invoke(copySpec))
|
||||
.getOrNull();
|
||||
return (filePermissions != null)
|
||||
? (int) filePermissions.getClass().getMethod("toUnixNumeric").invoke(filePermissions) : null;
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new GradleException("Failed to get permissions", ex);
|
||||
}
|
||||
}
|
||||
return fallback.get();
|
||||
return copySpec.getFileMode();
|
||||
}
|
||||
|
||||
private boolean isUsingDefaultLoader(Jar jar) {
|
||||
|
||||
@@ -22,7 +22,6 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.lang.reflect.Method;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.Collection;
|
||||
@@ -488,17 +487,12 @@ class BootZipCopyAction implements CopyAction {
|
||||
}
|
||||
|
||||
private int getPermissions(FileCopyDetails details) {
|
||||
if (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0) {
|
||||
try {
|
||||
Method getPermissionsMethod = details.getClass().getMethod("getPermissions");
|
||||
getPermissionsMethod.setAccessible(true);
|
||||
Object permissions = getPermissionsMethod.invoke(details);
|
||||
return (int) permissions.getClass().getMethod("toUnixNumeric").invoke(permissions);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new GradleException("Failed to get permissions", ex);
|
||||
}
|
||||
}
|
||||
return (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0)
|
||||
? details.getPermissions().toUnixNumeric() : getMode(details);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private int getMode(FileCopyDetails details) {
|
||||
return details.getMode();
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.io.File;
|
||||
import org.gradle.api.JavaVersion;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.internal.nativeintegration.services.NativeServices;
|
||||
import org.gradle.internal.nativeintegration.services.NativeServices.NativeServicesMode;
|
||||
import org.gradle.testfixtures.ProjectBuilder;
|
||||
import org.gradle.testfixtures.internal.ProjectBuilderImpl;
|
||||
|
||||
@@ -68,7 +69,7 @@ public final class GradleProjectBuilder {
|
||||
builder.withName(this.name);
|
||||
}
|
||||
if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) {
|
||||
NativeServices.initializeOnClient(userHome);
|
||||
NativeServices.initializeOnClient(userHome, NativeServicesMode.ENABLED);
|
||||
try {
|
||||
ProjectBuilderImpl.getGlobalServices();
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ class KotlinPluginActionIntegrationTests {
|
||||
configured.add(line.substring("Configuring :".length()));
|
||||
}
|
||||
}
|
||||
assertThat(configured).containsExactlyInAnyOrder("help", "clean");
|
||||
assertThat(configured).containsExactlyInAnyOrder("help", "compileJava", "clean");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ class BuildInfoTests {
|
||||
Project project = GradleProjectBuilder.builder().withProjectDir(projectDir).withName(projectName).build();
|
||||
((ProjectInternal) project).getServices()
|
||||
.get(GradlePropertiesController.class)
|
||||
.loadGradlePropertiesFrom(projectDir);
|
||||
.loadGradlePropertiesFrom(projectDir, false);
|
||||
return project;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user