如何从gradle运行gradle脚本

时间:2014-10-20 05:30:07

标签: gradle

如何从gradle运行另一个gradle脚本。我有多个gradle脚本在<root_project>/test目录下运行测试。使用要运行的测试gradle文件的名称调用<root_project>/build.gradle。例如

gradle run_test -PtestFile=foobar

这应该运行<root_project>/test/foobar.gradle(默认任务)

我目前正在做的是在project.exec任务中调用run_test。这有效,但现在我需要将项目属性从运行run_test的gradle进程传递给运行foobar.gradle的gradle进程

我该怎么做?是否有更多的gradle集成方式从另一个运行gradle脚本,将所有必需的信息传递给子gradle脚本?

2 个答案:

答案 0 :(得分:4)

我做了类似的事情,其中​​一个gradle中的“构造”任务切换到它创建的目录中另一个gradle文件中的“执行”任务(称为人工制品),并且它也通过所有项目属性传递

以下是切换的相关代码:

def gradleTask = "yourTaskToEventuallyRun"
def artefactBuild = project.tasks.create([name: "artefactBuild_$gradleTask", type: GradleBuild])
artefactBuild.buildFile = project.file("${artefactDir}/build.gradle")
artefactBuild.tasks = [gradleTask]

// inject all parameters passed to this build through to artefact build
def artefactProjectProperties = artefactBuild.startParameter.projectProperties
def currentProjectProperties = project.gradle.startParameter.projectProperties
artefactProjectProperties << currentProjectProperties
// you can add more here
// artefactProjectProperties << [someKey: someValue]

artefactBuild.execute()

答案 1 :(得分:0)

如果要指定其他gradle脚本,可以使用:

gradle --build-file anotherBuild.gradle taskName

gradle -b anotherBuild.gradle taskName