Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to set up a gradle project with more than 2 levels?

Tags:

gradle

We have been using gradle for about a year and have been somewhat successful with it. A number of features are still a little opaque, but we are getting there. I am not sure I am going about solving the problem correctly, so I will go ahead and ask the question:

All the examples that I have seen for gradle have a root project and one level of sub-projects. For a number of reasons, we would like to consolidate our git projects. All of these are gradle projects, some of which have gradle sub-projects. What we want to end up with is essentially a multi-level gradle structure. We do not want to alter the gradle setup for all those projects and instead would like to have a top level gradle that manages all the projects and corresponding subprojects. My first attempt showed that I cannot have a controlling build.gradle that orchestrates all of the projects and subprojects. Am I doing something wrong? Am I following and inherently broken paradigm?

Here is a sample structure for what I want to do:

Top Project   build.gradle   Project     build.gradle     Sub Project       build.gradle       src     Sub Project       ...   Project     ... 

Thank you and I hope I did not miss some obvious explanation in the documentation.

like image 890
Julio Garcia Avatar asked Mar 08 '13 16:03

Julio Garcia


People also ask

Can I have multiple build Gradle?

Hello , can i create multiple build. gradle for one project? Yes. You can have multiple build files in one project.

What is a multi module project Gradle?

A multi-project build in Gradle consists of one root project, and one or more subprojects. A basic multi-project build contains a root project and a single subproject. This is a structure of a multi-project build that contains a single subproject called app : Example 1.


2 Answers

I would simply put the following in TopProject/settings.gradle:

include 'Project1:SubProject1' include 'Project1:SubProject2' include 'Project2:SubProject1' ... 

The only change required to the projects you currently have is to remove settings.gradle files from them as you can only have one setting.gradle file per project structure.

like image 160
erdi Avatar answered Sep 26 '22 02:09

erdi


I had a similar problem. The simplest solution was to configure gradle by adding projects in the $root/settings.gradle file similar to the Erdi's answer. However, I managed to automatically add all subprojects. The logic will simply go through my directory structure and find all directories that contain build.gradle and add them as subprojects.

Here is how to do it:

  • Make sure you don't have any other settings.gradle but the root one
  • The content of the root settings.gradle file should be:
fileTree('.') {   include '**/build.gradle'   exclude 'build.gradle' // Exclude the root build file. }.collect { relativePath(it.parent).replace(File.separator, ':') }  .each { include(it) } 

I hope this helps.

like image 37
Sam Avatar answered Sep 26 '22 02:09

Sam