From f594f5913171e687191eec309787188ce3a27ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zsef=20Bart=C3=B3k?= Date: Fri, 13 Sep 2024 09:20:07 +0300 Subject: [PATCH] Use the right file permission API, depending on the Gradle version --- .../plugins/PlayDistributionPlugin.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/gradle/playframework/plugins/PlayDistributionPlugin.java b/src/main/java/org/gradle/playframework/plugins/PlayDistributionPlugin.java index 8fafc8c0..65508e8f 100644 --- a/src/main/java/org/gradle/playframework/plugins/PlayDistributionPlugin.java +++ b/src/main/java/org/gradle/playframework/plugins/PlayDistributionPlugin.java @@ -1,9 +1,6 @@ package org.gradle.playframework.plugins; -import org.gradle.api.Action; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; +import org.gradle.api.*; import org.gradle.api.artifacts.ArtifactCollection; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.component.ComponentIdentifier; @@ -122,13 +119,32 @@ private void createDistributionContentTasks(Project project, Distribution distri distSpec.into("bin", copySpec -> { copySpec.from(createStartScriptsTask); - copySpec.setFileMode(0755); + setFileMode(copySpec); }); distSpec.into("conf", copySpec -> copySpec.from("conf").exclude("routes")); distSpec.from("README"); } + private void setFileMode(CopySpec copySpec) { + try { + if (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0) { + copySpec.getClass().getMethod("filePermissions", Action.class) + .invoke(copySpec, (Action) filePermission -> { + try { + filePermission.getClass().getMethod("unix", String.class).invoke(filePermission, "0755"); + } catch (Exception e) { + throw new GradleException("Failed to set unix file permission", e); + } + }); + } else { + copySpec.getClass().getMethod("setFileMode", Integer.class).invoke(copySpec, 0755); + } + } catch (Exception e) { + throw new GradleException("Failed to set file permissions", e); + } + } + private String getMainClass(PlayPlatform playPlatform) { switch (PlayMajorVersion.forPlatform(playPlatform)) { case PLAY_2_3_X: