Skip to content

Commit e256391

Browse files
gjvoostenxzel23
authored andcommitted
Fix compatibility with Gradle 9
Project.exec is no longer available in Gradle 9. ExecOperations is the drop-in replacement available since 6.0. Fixes #155 Signed-off-by: Mikhail Lopatkin <me@mlopatkin.name> Signed-off-by: Gertjan van Oosten <gertjan@west.nl>
1 parent f78c2b8 commit e256391

14 files changed

Lines changed: 68 additions & 18 deletions

src/main/groovy/org/beryx/runtime/BaseTask.groovy

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,11 @@ import groovy.transform.CompileStatic
1919
import org.beryx.runtime.data.RuntimePluginExtension
2020
import org.beryx.runtime.util.Util
2121
import org.gradle.api.DefaultTask
22+
import org.gradle.api.model.ObjectFactory
2223
import org.gradle.api.tasks.Internal
2324

25+
import javax.inject.Inject
26+
2427
import static org.beryx.runtime.util.Util.EXEC_EXTENSION
2528

2629
@CompileStatic
@@ -33,6 +36,11 @@ class BaseTask extends DefaultTask {
3336
group = 'build'
3437
}
3538

39+
@Inject
40+
protected ObjectFactory getObjectFactory() {
41+
throw new UnsupportedOperationException("Gradle overrides this method when creating the task")
42+
}
43+
3644
@Internal
3745
String getJavaHomeOrDefault() {
3846
return extension.javaHome.present ? extension.javaHome.get() : defaultJavaHome

src/main/groovy/org/beryx/runtime/JPackageImageTask.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class JPackageImageTask extends BaseTask {
7272
def jreTask = (JreTask) project.tasks.getByName(RuntimePlugin.TASK_NAME_JRE)
7373
taskData.configureRuntimeImageDir(jreTask)
7474

75-
def taskImpl = new JPackageImageTaskImpl(project, taskData)
75+
def taskImpl = objectFactory.newInstance(JPackageImageTaskImpl, project, taskData)
7676
taskImpl.execute()
7777
}
7878
}

src/main/groovy/org/beryx/runtime/JPackageTask.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class JPackageTask extends BaseTask {
4646
taskData.javaHome = javaHomeOrDefault
4747
taskData.configureAppImageDir()
4848

49-
def taskImpl = new JPackageTaskImpl(project, taskData)
49+
def taskImpl = objectFactory.newInstance(JPackageTaskImpl, project, taskData)
5050
taskImpl.execute()
5151
}
5252
}

src/main/groovy/org/beryx/runtime/JreTask.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class JreTask extends BaseTask {
7979
taskData.javaHome = javaHome
8080
taskData.targetPlatforms = targetPlatforms.get()
8181

82-
def taskImpl = new JreTaskImpl(project, taskData)
82+
def taskImpl = objectFactory.newInstance(JreTaskImpl, project, taskData)
8383
taskImpl.execute()
8484
}
8585
}

src/main/groovy/org/beryx/runtime/RuntimeTask.groovy

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ import org.gradle.api.tasks.*
3030
import org.gradle.api.tasks.application.CreateStartScripts
3131
import org.gradle.jvm.application.scripts.ScriptGenerator
3232
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator
33+
import org.gradle.process.ExecOperations
34+
35+
import javax.inject.Inject
3336

3437
@CompileStatic
3538
class RuntimeTask extends BaseTask {
@@ -110,12 +113,17 @@ class RuntimeTask extends BaseTask {
110113
}
111114
}
112115

116+
@Inject
117+
protected ExecOperations getExecOperations() {
118+
throw new UnsupportedOperationException("Gradle overrides this method when creating the task")
119+
}
120+
113121
@CompileDynamic
114122
private void configureCds() {
115123
if (cdsData.enabled) {
116124
this.doLast {
117-
project.exec {
118-
commandLine = ["$imageDir/bin/java", "-Xshare:dump"]
125+
execOperations.exec {
126+
it.commandLine = ["$imageDir/bin/java", "-Xshare:dump"]
119127
}
120128
}
121129
System.properties['BADASS_CDS_ARCHIVE_FILE_LINUX'] = cdsData.sharedArchiveFile ?: '$APP_HOME/lib/server/$APP_NAME.jsa'
@@ -135,7 +143,7 @@ class RuntimeTask extends BaseTask {
135143
taskData.imageDir = imageDir.asFile
136144
taskData.targetPlatforms = targetPlatforms.get()
137145

138-
def taskImpl = new RuntimeTaskImpl(project, taskData)
146+
def taskImpl = objectFactory.newInstance(RuntimeTaskImpl, project, taskData)
139147
taskImpl.execute()
140148
}
141149
}

src/main/groovy/org/beryx/runtime/RuntimeZipTask.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class RuntimeZipTask extends BaseTask {
5555
taskData.targetPlatforms = targetPlatforms.get()
5656
taskData.imageDir = imageDir.asFile
5757
taskData.imageZip = imageZip.asFile
58-
def taskImpl = new RuntimeZipTaskImpl(project, taskData)
58+
def taskImpl = objectFactory.newInstance(RuntimeZipTaskImpl, project, taskData)
5959
taskImpl.execute()
6060
}
6161
}

src/main/groovy/org/beryx/runtime/SuggestModulesTask.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class SuggestModulesTask extends BaseTask {
3838
void suggestMergedModuleInfoAction() {
3939
def taskData = new SuggestModulesData()
4040
taskData.javaHome = javaHome
41-
def taskImpl = new SuggestModulesTaskImpl(project, taskData)
41+
def taskImpl = objectFactory.newInstance(SuggestModulesTaskImpl, project, taskData)
4242
taskImpl.execute()
4343
}
4444
}

src/main/groovy/org/beryx/runtime/impl/BaseTaskImpl.groovy

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,31 @@ package org.beryx.runtime.impl
1818

1919
import groovy.transform.CompileStatic
2020
import org.gradle.api.Project
21+
import org.gradle.process.ExecOperations
22+
import org.gradle.process.ExecResult
23+
import org.gradle.process.ExecSpec
24+
25+
import javax.inject.Inject
2126

2227
@CompileStatic
23-
class BaseTaskImpl<DATA> {
28+
abstract class BaseTaskImpl<DATA> {
2429
static String SEP = File.pathSeparatorChar
2530

2631
final Project project
2732
final DATA td
2833

34+
@Inject
35+
protected abstract ExecOperations getExecOperations() // Gradle provides implementation
36+
2937
BaseTaskImpl(Project project, DATA td) {
3038
this.project = project
3139
this.td = td
3240
}
41+
42+
protected ExecResult exec(@DelegatesTo(ExecSpec) Closure<?> spec) {
43+
return execOperations.exec {
44+
spec.delegate = it
45+
spec()
46+
}
47+
}
3348
}

src/main/groovy/org/beryx/runtime/impl/JPackageImageTaskImpl.groovy

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,21 @@ import org.gradle.api.Project
2727
import org.gradle.api.logging.Logger
2828
import org.gradle.api.logging.Logging
2929

30+
import javax.inject.Inject
31+
3032
@CompileStatic
31-
class JPackageImageTaskImpl extends BaseTaskImpl<JPackageTaskData> {
33+
abstract class JPackageImageTaskImpl extends BaseTaskImpl<JPackageTaskData> {
3234
private static final Logger LOGGER = Logging.getLogger(JPackageImageTaskImpl.class)
3335

36+
@Inject
3437
JPackageImageTaskImpl(Project project, JPackageTaskData taskData) {
3538
super(project, taskData)
3639
LOGGER.debug("taskData: $taskData")
3740
}
3841

3942
@CompileDynamic
4043
void execute() {
41-
def result = project.exec {
44+
def result = exec {
4245
ignoreExitValue = true
4346
standardOutput = new ByteArrayOutputStream()
4447

src/main/groovy/org/beryx/runtime/impl/JPackageTaskImpl.groovy

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ import org.gradle.api.logging.Logger
2828
import org.gradle.api.logging.Logging
2929
import org.gradle.internal.os.OperatingSystem
3030

31+
import javax.inject.Inject
32+
3133
@CompileStatic
32-
class JPackageTaskImpl extends BaseTaskImpl<JPackageTaskData> {
34+
abstract class JPackageTaskImpl extends BaseTaskImpl<JPackageTaskData> {
3335
private static final Logger LOGGER = Logging.getLogger(JPackageTaskImpl.class);
3436

37+
@Inject
3538
JPackageTaskImpl(Project project, JPackageTaskData taskData) {
3639
super(project, taskData)
3740
LOGGER.debug("taskData: $taskData")
@@ -56,7 +59,7 @@ class JPackageTaskImpl extends BaseTaskImpl<JPackageTaskData> {
5659
def subdirs = installerOutDir.listFiles({ f -> f.directory } as FileFilter)
5760
if(subdirs) project.delete(subdirs)
5861
}
59-
def result = project.exec {
62+
def result = exec {
6063
ignoreExitValue = true
6164
standardOutput = new ByteArrayOutputStream()
6265
project.ext.jpackageInstallerOutput = {

0 commit comments

Comments
 (0)