Matija Folnovic
Matija Folnovic

Reputation: 946

Gradle - Recursive subprojects

Assume I wanted to use Gradle with a project structure such as:

RootProject
\-- SubProjectA
    \-- SubProjectAA
    \-- SubProjectAB

How I would I achieve this?

What I tried is pretty straightforward. I've created all directories, with a structure described above:

RootProject
\-- SubProjectA
    \-- SubProjectAA
        \-- build.gradle
    \-- SubProjectAB
        \-- build.gradle
    \-- build.gradle
    \-- settings.gradle
\-- build.gradle
\-- settings.gradle

RootProject/settings.gradle:

include "SubProjectA"

RootProject/SubProjectA/settings.gradle:

include "SubProjectAA", "SubProjectAB"

There are two things I tried. First, I tried importing the project in Eclipse - which didn't detect SubProjectAA nor SubProjectAB. Stunned, I ran gradle projects in RootProject and got this output:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'RootProject'
\--- Project ':SubProjectA'

Still, thinking I made a mistake, I tried running the same command in SubProjectA, and got:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'RootProject'
\--- Project ':SubProjectAA'
\--- Project ':SubProjectAB'

I assume that resolving subprojects doesn't go recursively. Is there any workaround for this?

Every example is masked with sample names, sorry if I made any mistake.

Thanks!

Upvotes: 25

Views: 14757

Answers (2)

user9703534
user9703534

Reputation: 1

try with

RootProject
\-- SubProjectA
    \-- SubProjectAA
        \-- build.gradle
    \-- SubProjectAB
        \-- build.gradle
\-- build.gradle
\-- settings.gradle

include ':SubProjectA/SubProjectAA'

Upvotes: -3

Peter Niederwieser
Peter Niederwieser

Reputation: 123890

You can only have one settings.gradle. Typically it would contain something like:

include "SubProjectA:SubProjectAA"
include "SubProjectA:SubProjectAB"

More information can be found in the "multi-project builds" chapter of the Gradle User Guide.

Upvotes: 31

Related Questions