Skip to content

Commit 1fd1813

Browse files
authored
fix: Update Gradle plugin to Gradle 8 API (#588)
1 parent c532f84 commit 1fd1813

File tree

7 files changed

+74
-69
lines changed

7 files changed

+74
-69
lines changed

gradle-plugin/src/main/groovy/grails/views/gradle/AbstractGroovyTemplateCompileTask.groovy

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import org.gradle.api.tasks.Input
1010
import org.gradle.api.tasks.InputDirectory
1111
import org.gradle.api.tasks.Nested
1212
import org.gradle.api.tasks.Optional
13-
import org.gradle.api.tasks.OutputDirectory
1413
import org.gradle.api.tasks.TaskAction
1514
import org.gradle.api.tasks.compile.AbstractCompile
1615
import org.gradle.process.ExecResult
@@ -38,11 +37,23 @@ abstract class AbstractGroovyTemplateCompileTask extends AbstractCompile {
3837
@Nested
3938
final ViewCompileOptions compileOptions
4039

40+
@Input
41+
final Property<String> fileExtension
42+
43+
@Input
44+
final Property<String> scriptBaseName
45+
46+
@Input
47+
final Property<String> compilerName
48+
4149
@Inject
4250
AbstractGroovyTemplateCompileTask(ObjectFactory objectFactory) {
43-
packageName = objectFactory.property(String)
51+
packageName = objectFactory.property(String).convention(project.name ?: project.projectDir.canonicalFile.name)
4452
srcDir = objectFactory.directoryProperty()
4553
compileOptions = new ViewCompileOptions(objectFactory)
54+
fileExtension = objectFactory.property(String)
55+
scriptBaseName = objectFactory.property(String)
56+
compilerName = objectFactory.property(String)
4657
}
4758

4859
@Override
@@ -62,16 +73,12 @@ abstract class AbstractGroovyTemplateCompileTask extends AbstractCompile {
6273
protected void compile() {
6374
Iterable<String> projectPackageNames = getProjectPackageNames(project.projectDir)
6475

65-
if (packageName.isPresent()) {
66-
packageName.set(project.name ?: project.projectDir.canonicalFile.name)
67-
}
68-
6976
ExecResult result = project.javaexec(
7077
new Action<JavaExecSpec>() {
7178
@Override @CompileDynamic
7279
void execute(JavaExecSpec javaExecSpec) {
73-
javaExecSpec.mainClass.set(getCompilerName())
74-
javaExecSpec.classpath = getClasspath()
80+
javaExecSpec.mainClass.set(compilerName)
81+
javaExecSpec.classpath = classpath
7582

7683
List<String> jvmArgs = compileOptions.forkOptions.jvmArgs
7784
if (jvmArgs) {
@@ -88,7 +95,7 @@ abstract class AbstractGroovyTemplateCompileTask extends AbstractCompile {
8895
packageImports,
8996
packageName.get(),
9097
project.file('grails-app/conf/application.yml').canonicalPath,
91-
compileOptions.encoding
98+
compileOptions.encoding.get()
9299
] as List<String>
93100

94101
prepareArguments(arguments)
@@ -103,17 +110,6 @@ abstract class AbstractGroovyTemplateCompileTask extends AbstractCompile {
103110
// no-op
104111
}
105112

106-
@Input
107-
protected String getCompilerName() {
108-
'grails.views.GenericGroovyTemplateCompiler'
109-
}
110-
111-
@Input
112-
abstract String getFileExtension()
113-
114-
@Input
115-
abstract String getScriptBaseName()
116-
117113
Iterable<String> getProjectPackageNames(File baseDir) {
118114
File rootDir = baseDir ? new File(baseDir, "grails-app${File.separator}domain") : null
119115
Set<String> packageNames = []

gradle-plugin/src/main/groovy/grails/views/gradle/AbstractGroovyTemplatePlugin.groovy

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ import org.apache.tools.ant.taskdefs.condition.Os
77
import org.gradle.api.Plugin
88
import org.gradle.api.Project
99
import org.gradle.api.Task
10+
import org.gradle.api.file.ConfigurableFileCollection
1011
import org.gradle.api.file.FileCollection
1112
import org.gradle.api.tasks.SourceSetOutput
13+
import org.gradle.api.tasks.TaskContainer
1214
import org.gradle.api.tasks.bundling.Jar
1315
import org.grails.gradle.plugin.core.GrailsExtension
1416
import org.grails.gradle.plugin.core.IntegrationTestGradlePlugin
@@ -32,7 +34,7 @@ class AbstractGroovyTemplatePlugin implements Plugin<Project> {
3234
AbstractGroovyTemplatePlugin(Class<? extends AbstractGroovyTemplateCompileTask> taskClass, String fileExtension) {
3335
this.taskClass = taskClass
3436
this.fileExtension = fileExtension
35-
this.pathToSource = "grails-app/views"
37+
this.pathToSource = 'grails-app/views'
3638
}
3739

3840
AbstractGroovyTemplatePlugin(Class<? extends AbstractGroovyTemplateCompileTask> taskClass, String fileExtension, String pathToSource) {
@@ -43,43 +45,58 @@ class AbstractGroovyTemplatePlugin implements Plugin<Project> {
4345

4446
@Override
4547
void apply(Project project) {
46-
def allTasks = project.tasks
47-
def upperCaseName = GrailsNameUtils.getClassName(fileExtension)
48-
AbstractGroovyTemplateCompileTask templateCompileTask = (AbstractGroovyTemplateCompileTask) allTasks.register("compile${upperCaseName}Views".toString(), (Class<? extends Task>) taskClass).get()
48+
TaskContainer tasks = project.tasks
49+
String upperCaseName = GrailsNameUtils.getClassName(fileExtension)
50+
AbstractGroovyTemplateCompileTask templateCompileTask = (AbstractGroovyTemplateCompileTask) tasks.register(
51+
"compile${upperCaseName}Views".toString(),
52+
(Class<? extends Task>) taskClass
53+
).get()
4954
SourceSetOutput output = SourceSets.findMainSourceSet(project)?.output
5055
FileCollection classesDir = resolveClassesDirs(output, project)
51-
File destDir = new File(project.buildDir, "${templateCompileTask.fileExtension}-classes/main")
56+
File destDir = new File(project.layout.buildDirectory.get().asFile, "${templateCompileTask.fileExtension.get()}-classes/main")
5257
output?.dir(destDir)
5358
project.afterEvaluate {
5459
GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension)
5560
if (grailsExt.pathingJar && Os.isFamily(Os.FAMILY_WINDOWS)) {
56-
Jar pathingJar = (Jar) allTasks.named('pathingJar').get()
57-
def allClasspath = project.files("${project.buildDir}/classes/groovy/main", "${project.buildDir}/resources/main", "${project.projectDir}/gsp-classes", pathingJar.archiveFile.get().asFile)
61+
Jar pathingJar = (Jar) tasks.named('pathingJar').get()
62+
ConfigurableFileCollection allClasspath = project.files(
63+
"${project.layout.buildDirectory.get().asFile}/classes/groovy/main",
64+
"${project.layout.buildDirectory.get().asFile}/resources/main",
65+
"${project.layout.projectDirectory.getAsFile()}/gsp-classes",
66+
pathingJar.archiveFile.get().asFile
67+
)
5868
templateCompileTask.dependsOn(pathingJar)
5969
templateCompileTask.classpath = allClasspath
6070
}
6171
}
6272
def allClasspath = classesDir + project.configurations.named('compileClasspath').get()
63-
templateCompileTask.getDestinationDirectory().set( destDir )
73+
templateCompileTask.destinationDirectory.set(destDir)
6474
templateCompileTask.classpath = allClasspath
6575
templateCompileTask.packageName.set(project.name)
6676
templateCompileTask.setSource(project.file("${project.projectDir}/$pathToSource"))
67-
templateCompileTask.dependsOn( allTasks.named('classes').get() )
77+
templateCompileTask.dependsOn(tasks.named('classes').get())
6878
project.plugins.withType(SpringBootPlugin).configureEach {plugin ->
69-
allTasks.withType(Jar).configureEach { Task task ->
70-
if (task.name in ['jar', 'bootJar', 'war', 'bootWar']) { task.dependsOn templateCompileTask }
79+
tasks.withType(Jar).configureEach { Task task ->
80+
if (task.name in ['jar', 'bootJar', 'war', 'bootWar']) {
81+
task.dependsOn(templateCompileTask)
82+
}
83+
}
84+
tasks.withType(ResolveMainClassName).configureEach {
85+
it.dependsOn(templateCompileTask)
7186
}
72-
allTasks.withType(ResolveMainClassName).configureEach { t -> t.dependsOn(templateCompileTask)}
7387
}
74-
project.plugins.withType(IntegrationTestGradlePlugin).configureEach { plugin ->
75-
allTasks.named("compileIntegrationTestGroovy") { t-> t.dependsOn(templateCompileTask)}
76-
allTasks.named("integrationTest") {t -> t.dependsOn(templateCompileTask)}
88+
project.plugins.withType(IntegrationTestGradlePlugin).configureEach {
89+
tasks.named('compileIntegrationTestGroovy') { Task task ->
90+
task.dependsOn(templateCompileTask)
91+
}
92+
tasks.named('integrationTest') { Task task ->
93+
task.dependsOn(templateCompileTask)
94+
}
7795
}
7896
}
7997

8098
@CompileDynamic
8199
protected FileCollection resolveClassesDirs(SourceSetOutput output, Project project) {
82-
return output.classesDirs ?: project.files(new File(project.buildDir, "classes/groovy/main"))
100+
return output.classesDirs ?: project.files(new File(project.layout.buildDirectory.get().asFile, 'classes/groovy/main'))
83101
}
84-
85102
}

gradle-plugin/src/main/groovy/grails/views/gradle/ViewCompileOptions.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.gradle.api.provider.Property
55
import org.gradle.api.tasks.Input
66
import org.gradle.api.tasks.Nested
77
import org.gradle.api.tasks.compile.GroovyForkOptions
8-
import javax.inject.Inject;
8+
import javax.inject.Inject
99

1010
/**
1111
* @author Graeme Rocher

gradle-plugin/src/main/groovy/grails/views/gradle/json/GrailsJsonViewsPlugin.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import groovy.transform.CompileStatic
1313
class GrailsJsonViewsPlugin extends AbstractGroovyTemplatePlugin {
1414

1515
GrailsJsonViewsPlugin() {
16-
super(JsonViewCompilerTask, "gson")
16+
super(JsonViewCompilerTask, 'gson')
1717
}
1818
}
1919

gradle-plugin/src/main/groovy/grails/views/gradle/json/JsonViewCompilerTask.groovy

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@ package grails.views.gradle.json
22

33
import grails.views.gradle.AbstractGroovyTemplateCompileTask
44
import groovy.transform.CompileStatic
5+
import org.gradle.api.model.ObjectFactory
6+
import org.gradle.api.provider.Property
57
import org.gradle.api.tasks.Input
68

9+
import javax.inject.Inject
10+
711
/**
812
* Concrete implementation that compiles JSON templates
913
*
@@ -12,22 +16,11 @@ import org.gradle.api.tasks.Input
1216
@CompileStatic
1317
class JsonViewCompilerTask extends AbstractGroovyTemplateCompileTask {
1418

15-
@Input
16-
@Override
17-
String getFileExtension() {
18-
"gson"
19-
}
20-
21-
@Input
22-
@Override
23-
String getScriptBaseName() {
24-
"grails.plugin.json.view.JsonViewTemplate"
19+
@Inject
20+
JsonViewCompilerTask(ObjectFactory objectFactory) {
21+
super(objectFactory)
22+
fileExtension.convention('gson')
23+
scriptBaseName.convention('grails.plugin.json.view.JsonViewTemplate')
24+
compilerName.convention('grails.plugin.json.view.JsonViewCompiler')
2525
}
26-
27-
@Input
28-
@Override
29-
protected String getCompilerName() {
30-
"grails.plugin.json.view.JsonViewCompiler"
31-
}
32-
3326
}

gradle-plugin/src/main/groovy/grails/views/gradle/markup/GrailsMarkupViewsPlugin.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ import groovy.transform.CompileStatic
1313
class GrailsMarkupViewsPlugin extends AbstractGroovyTemplatePlugin {
1414

1515
GrailsMarkupViewsPlugin() {
16-
super(MarkupViewCompilerTask, "gml")
16+
super(MarkupViewCompilerTask, 'gml')
1717
}
1818
}

gradle-plugin/src/main/groovy/grails/views/gradle/markup/MarkupViewCompilerTask.groovy

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package grails.views.gradle.markup
22

33
import grails.views.gradle.AbstractGroovyTemplateCompileTask
44
import groovy.transform.CompileStatic
5+
import org.gradle.api.model.ObjectFactory
6+
import org.gradle.api.provider.Property
57
import org.gradle.api.tasks.Input
68

79
/**
@@ -14,21 +16,18 @@ import org.gradle.api.tasks.Input
1416
class MarkupViewCompilerTask extends AbstractGroovyTemplateCompileTask {
1517

1618
@Input
17-
@Override
18-
String getFileExtension() {
19-
"gml"
20-
}
19+
final Property<String> fileExtension
2120

2221
@Input
23-
@Override
24-
String getScriptBaseName() {
25-
"grails.plugin.markup.view.MarkupViewTemplate"
26-
}
22+
final Property<String> scriptBaseName
2723

2824
@Input
29-
@Override
30-
protected String getCompilerName() {
31-
"grails.plugin.markup.view.MarkupViewCompiler"
32-
}
25+
final Property<String> compilerName
3326

27+
MarkupViewCompilerTask(ObjectFactory objectFactory) {
28+
super(objectFactory)
29+
fileExtension.convention('gml')
30+
scriptBaseName.convention('grails.plugin.markup.view.MarkupViewTemplate')
31+
compilerName.convention('grails.plugin.markup.view.MarkupViewCompiler')
32+
}
3433
}

0 commit comments

Comments
 (0)