Gradle Management: Setting up build logic module - devrath/RunTracer GitHub Wiki
Why build logic module is needed
- We need to have a common place to store the shared config in our app like
compile-sdk
, build-types
, compile-options
, etc
...
- This is useful so that we do not need to do this for every single module in the application.
How to achieve this
- We can do this in a way called
included build
.
- This
included module
is meant to contain
the gradle specific configuration
.
- This module is also meant to be
consumed
by other gradle-specific
files.
- Here we will just put the configuration that is needed at compile time.
included build
is just adding another gradle project to our project. So we can imagine an entire project with app-modules
, and individual-subModules
all together become one module, and included build
becomes a separate project
How to differentiate between normal kotlin module and gradle specific module
- Say you have created a
build-logic
module in the application, Your settings.gradle.kts
will look like this.
pluginManagement {
includeBuild("build-logic") //---------------------------------> Add this line
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
rootProject.name = "YourApp"
include(":app")
include(":auth:data")
Difference between BuildSrc and BuildLogic
BuildSrc
--> Here say there are multiple plugins present, when one of them is applied all re-build
BuildLogic
--> Here say there are multiple plugins present, when one of them is applied only that plugin is re-built