Niranjan
Niranjan

Reputation: 2921

Gradle: Conditional include of subprojects

I have a maven multi-module project (please see the attached image for the structure). I am in the process of migrating to Gradle.

Project Structure

We have multiple profiles inside AppBuild/pom.xml like shown below; and we run our maven build from AppBuild with -P option for the profiles.

Profile Structure

Since I am new to Gradle, I am not able to decide what is the best way to go about it. Now, I am thinking to put some conditional include in settings.gradle based on some -P argument, but I am not too sure. Could someone help me how to go about this? What is the best way with some examples.

Thanks in advance.

~ Niranjan

Upvotes: 3

Views: 2974

Answers (2)

Chris
Chris

Reputation: 727

I recently came across the same question, since I have a multiproject build where I want to include a special subproject only on some occasions.
This special subproject only depends on one other subproject and takes approx 1-2min to configure. So I don't want to have it included if I don't want to build it. That saves some build time. So, what I did was to modify the settings.gradle

if(file('MySpecialProject').exists()){
  include ':MySpecialProject'
}

When I do not want to build MySpecialProject I can simply rename/delete its folder. In my case, the folder is a symlink, since this 'subproject' resides in it's own git repo. Even if @spy writes that if/then/else is not possible in settings, it did work for me.

Upvotes: 4

Peter Niederwieser
Peter Niederwieser

Reputation: 123910

Conditional include isn't straightforward in Gradle (it's not a first-class feature), and it's unclear why you would need it for so few subprojects. I recommend to start without and add all four subprojects to settings.gradle.

Upvotes: 1

Related Questions