With Gradle, is it possible to call GradleBuild directly instead of specifying it as a type?
gradle
Solution
You cannot invoke a task directly, but there are plenty of other ways to abstract over the code. For example:
def createBuildTask(name, buildFile) {
task "$name"(type: GradleBuild) {
buildFile = buildFile
tasks = ['clean']
}
}
createBuildTask("cleanCommon", "common/build.gradle")
createBuildTask("cleanCrawler", "crawler/build.gradle")
createBuildTask("cleanPortlet", "portlet/build.gradle")
I wonder why you use the `GradleBuild` task in the first place, but that's a different discussion.
Problem
I have this in my build.gradle: ``` task cleanCommon(type: GradleBuild) { buildFile = 'common/build.gradle' tasks = ['clean'] } task cleanCrawler(type: GradleBuild) { buildFile = 'crawler/build.gradle' tasks = ['clean'] } task cleanPortlet(type: GradleBuild) { buildFile = 'portlet/build.gradle' tasks = ['clean'] } task cleanAll(dependsOn: ['cleanCommon', 'cleanCrawler', 'cleanPortlet']) { } ``` It's so verbose. Is there some way I could do something like the pseudo code below? ``` taskCleanAll { GradleBuild.pleaseRunTask('common/build.gradle', 'clean') GradleBuild.pleaseRunTask('crawler/build.gradle', 'clean') GradleBuild.pleaseRunTask('portlet/build.gradle', 'clean') } ```