在另一个项目中调用gradle“build”任务

时间:2015-04-16 21:57:15

标签: build gradle task

我使用gradle只有几天

在我当前的build.gradle脚本中,我有一个任务,我想在每次执行后调用另一个项目中的构建任务(即在其他地方的不同build.gradle中定义)

我的问题是如何从另一个项目调用任务?

我想我想做像tasks.build.execute()这样的事情,但它似乎没有用。我试过这个:

commandLine "${rootDir}\\gradle", 'build', 'eclipse'

它至少为我当前的项目执行了构建和eclipse而不是主项目。希望我的问题很清楚

2 个答案:

答案 0 :(得分:19)

调整buildFile路径等:

task buildSomethingElse(type: GradleBuild) {
  buildFile = '../someOtherDirectory/build.gradle'
  tasks = ['build']
}

build.finalizedBy('buildsomethingElse')

参考:Gradle组织构建逻辑指南,59.5段。

您也可以将此应用于另一个ant项目,方法是在您的ant项目中添加一行build.gradle文件,该文件只调用ant,如下所示:

ant.importBuild 'build.xml'

答案 1 :(得分:17)

首先阅读: http://gradle.org/docs/current/userguide/multi_project_builds.html

如果您有多项目构建 您需要一个包含settings.gradle文件的根项目,其中包含:

include 'myproject1'
include 'myproject2'

你可以像这样从一个项目到另一个项目建立依赖关系:

myproject1 / gradle.build

task someOtherTask() << {
   println 'Hello'
}

myproject2 / gradle.build

task sometask(dependsOn: ':myproject1:someOtherTask') << {
  //do something here
}

或者如果您想要调用任务:

project(':myproject1').tasks.build.execute()

注意:您必须应用java插件才能使构建任务可用。