If I have a project structure like this: /root ->/application/src/main/java/… ->/extensions ->->/ext1/src/main/java/… ->->/ext2/src/main/java/…
How do I manage the inclusions and dependencies? Is it possible for :application to be dependent on :extensions and for :extensions to manage its children by itself?
Yes, I think I simple technique is to create a set of configurations in your ‘’‘extensions/’’’ project and then you can reference the configurations by name in the ‘’‘applications/’’’ projects. For example:
configurations.create 'extSetA'
configurations.create 'extSetB'
dependencies {
extSetA project(":extensions:ext1")
extSetA project(":extensions:ext2")
extSetB project(":extensions:ext1")
extSetB project(":extnesions:ext3")
}
From your application projects …
dependencies {
compile project(path:":extensions", configuration:"extSetA")
}
Another way would be to create a global list that includes all of the desired extensions.
ext.extensionSetA = [ project(":extensions:ext1"), project(":extesions:ext2") ]
ext.extensionSetB = [ project(":extensions:ext1"), project("extensions:ext3") ]
dependencies {
compile extensionSetA
}