使用Gradle,是否可以直接调用GradleBuild而不是将其指定为类型?
我的身材里有这个。格雷德尔:使用Gradle,是否可以直接调用GradleBuild而不是将其指定为类型?,gradle,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
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']) {
}
太冗长了。有什么方法可以像下面的伪代码那样做吗
taskCleanAll {
GradleBuild.pleaseRunTask('common/build.gradle', 'clean')
GradleBuild.pleaseRunTask('crawler/build.gradle', 'clean')
GradleBuild.pleaseRunTask('portlet/build.gradle', 'clean')
}
像这样的东西可能有用。。。注:未对其进行测试。但你为什么认为它如此冗长?我认为那样很干净
task cleanAll << {
StartParameter startParameter = project.gradle.startParameter.newBuild()
startParameter.tasks = ['clean']
runGradle('portlet/build.gradle', startParameter)
runGradle('crawler/build.gradle', startParameter)
runGradle('common/build.gradle', startParameter)
}
def runGradle(buildFile, params) {
params.buildFile = buildFile
GradleLauncher.newInstance(params).run().rethrowFailure();
}
您不能直接调用任务,但是还有很多其他方法可以对代码进行抽象。例如:
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")
我想知道为什么您首先使用GradleBuild
任务,但这是一个不同的讨论。def List buildFileList=['common/build.gradle','crawler/build.gradle','portlet/build.gradle']
def List buildFileList = ['common/build.gradle', 'crawler/build.gradle', 'portlet/build.gradle']
task cleanAll << {
buildFileList.each() {
def tempTask = tasks.create(name: "execute_$it", type: GradleBuild)
tempTask.buildFile="$it"
tempTask.tasks = ['clean']
tempTask.execute()
}
}
task cleanAll我有三个独立的项目,它们彼此都不了解,我只是想创建一个构建文件,可以一次性构建它们。我想知道您是否可以研究多项目构建。虽然这可能可以回答这个问题,但最好提供一些关于此代码如何帮助的解释。
def List buildFileList = ['common/build.gradle', 'crawler/build.gradle', 'portlet/build.gradle']
task cleanAll << {
buildFileList.each() {
def tempTask = tasks.create(name: "execute_$it", type: GradleBuild)
tempTask.buildFile="$it"
tempTask.tasks = ['clean']
tempTask.execute()
}
}