Gradle - Recursive subprojects

Matija Folnovic picture Matija Folnovic · Sep 7, 2013 · Viewed 11.5k times · Source

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!

Answer

Peter Niederwieser picture Peter Niederwieser · Sep 7, 2013

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.