Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

calling gradle "build" task in another project

Tags:

gradle

build

task

I am only a couple of days into using gradle

In my current build.gradle script I have a task which I would like to call the build task in another project (ie. defined in a different build.gradle somewhere else) after each time it is executed

My question is how do I call a task from another project?

I guess I want to do something like tasks.build.execute() but it doesn't seem to work. I tried this:

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

it at least executed the build and eclipse for my current project just not the master project. Hope my question is clear

like image 367
hamad32 Avatar asked Apr 16 '15 21:04

hamad32


People also ask

Can task call another task?

Task declaration is declarative not imperative. So a task can depend on another task but they cannot execute another task.

How do I add a project as a dependency of another project Gradle?

To add a dependency to your project, specify a dependency configuration such as implementation in the dependencies block of your module's build.gradle file.

Can we have multiple build Gradle?

Creating a multi-project buildA multi-project build in Gradle consists of one root project, and one or more subprojects. This is the recommended project structure for starting any Gradle project.


2 Answers

Adjust the buildFile path, etc.:

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

build.finalizedBy('buildsomethingElse')

Reference: Gradle organizing build logic guide, paragraph 59.5.

You can apply this to another ant project as well, by adding a one line build.gradle file in your ant project that just calls ant, like so:

ant.importBuild 'build.xml'
like image 126
karl Avatar answered Sep 28 '22 11:09

karl


First read this: http://gradle.org/docs/current/userguide/multi_project_builds.html

If you have a multi-project build You need a root project that contains settings.gradle file with something like:

include 'myproject1'
include 'myproject2'

Than you can just make a dependency from one project to another like this:

myproject1/gradle.build

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

myproject2/gradle.build

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

Or if you want to call a task:

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

Notice: You have to apply java plugin to make build task available.

like image 41
CyberAleks Avatar answered Sep 28 '22 09:09

CyberAleks