Improve registerMainClassTask implementation Signed-off-by: Puneet Behl <behlp@objectcomputing.com>
diff --git a/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy b/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy index 9ee898a..4610f5d 100644 --- a/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy +++ b/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy
@@ -496,12 +496,19 @@ protected void registerFindMainClassTask(Project project) { TaskContainer taskContainer = project.tasks - if (taskContainer.findByName("findMainClass") == null) { - def findMainClassTask = taskContainer.create("findMainClass", FindMainClassTask) - findMainClassTask.mustRunAfter taskContainer.withType(GroovyCompile) - taskContainer.withType(BootArchive) { BootArchive task -> - task.dependsOn findMainClassTask - } + def findMainClassTask = taskContainer.findByName("findMainClass") + if (findMainClassTask == null) { + findMainClassTask = project.tasks.register("findMainClass", FindMainClassTask).get() + findMainClassTask.mustRunAfter(project.tasks.withType(GroovyCompile)) + } else if (!FindMainClassTask.class.isAssignableFrom(findMainClassTask.class)) { + def grailsFindMainClass = project.tasks.register("grailsFindMainClass", FindMainClassTask).get() + grailsFindMainClass.mustRunAfter(findMainClassTask) + findMainClassTask.dependsOn(grailsFindMainClass) + } + + def bootRepackageTask = project.tasks.findByName("bootRepackage") + if (bootRepackageTask) { + bootRepackageTask.dependsOn findMainClassTask } }