Skip to content

Commit

Permalink
Merge pull request #31 from avidraghav/feature/hilt-convention-plugin
Browse files Browse the repository at this point in the history
Convention plugin for applying Hilt
  • Loading branch information
avidraghav authored Oct 16, 2023
2 parents adc88d7 + 797937c commit 592ddc1
Show file tree
Hide file tree
Showing 10 changed files with 123 additions and 48 deletions.
22 changes: 8 additions & 14 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
@file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage")

import org.jlleitschuh.gradle.ktlint.reporter.ReporterType

plugins {
id("com.android.application")
kotlin("android")
id("org.jlleitschuh.gradle.ktlint")
// Hilt doesn"t supports KSP yet
kotlin("kapt")
id("com.google.dagger.hilt.android")
id("com.google.devtools.ksp")
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.ktlint)
id("spacedawn.android.hilt")
alias(libs.plugins.ksp)
}

android {
Expand Down Expand Up @@ -104,9 +104,7 @@ dependencies {
// Retrofit
implementation(libs.bundles.retrofit)

// Hilt
implementation(libs.hilt.android)
kapt(libs.hilt.android.compiler)
// Navigation with Hilt and Compose
implementation(libs.hilt.navigation)

testImplementation(libs.test.junit)
Expand All @@ -119,7 +117,3 @@ dependencies {
testImplementation(libs.google.truth)
androidTestImplementation(libs.google.truth)
}

kapt {
correctErrorTypes = true
}
31 changes: 31 additions & 0 deletions build-logic/convention/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
@file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage")

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
`kotlin-dsl`
}

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
}

dependencies {
compileOnly(libs.build.agp)
compileOnly(libs.build.kotlin)
}

gradlePlugin {
plugins {
register("androidHilt") {
id = "spacedawn.android.hilt"
implementationClass = "AndroidHiltConventionPlugin"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.getByType
import org.jetbrains.kotlin.gradle.plugin.KaptExtension

class AndroidHiltConventionPlugin : Plugin<Project> {
override fun apply(project: Project) {
with(project) {
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")

pluginManager.apply(libs.findPlugin("hilt").get().get().pluginId)
pluginManager.apply(libs.findPlugin("kapt").get().get().pluginId)

dependencies {
"implementation"(libs.findLibrary("hilt.android").get())
"kapt"(libs.findLibrary("hilt.android.compiler").get())
}
kapt().apply {
correctErrorTypes = true
}
}
}

private fun Project.kapt(): KaptExtension {
return extensions.getByType(KaptExtension::class.java)
}
}
4 changes: 4 additions & 0 deletions build-logic/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Gradle properties are not passed to included builds https://github.com/gradle/gradle/issues/2534
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configureondemand=true
14 changes: 14 additions & 0 deletions build-logic/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}

rootProject.name = "build-logic"
include(":convention")
16 changes: 9 additions & 7 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
@file:Suppress("DSL_SCOPE_VIOLATION")

plugins {
id("com.android.application") version "8.1.0" apply false
id("com.android.library") version "8.1.0" apply false
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
id("org.jetbrains.kotlin.jvm") version "1.9.0" apply false
id("org.jlleitschuh.gradle.ktlint") version "11.5.0"
id("com.google.dagger.hilt.android") version "2.47" apply false
id("com.google.devtools.ksp") version "1.9.0-1.0.13" apply false
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.ktlint) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.ksp) apply false
}
22 changes: 7 additions & 15 deletions data/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
@file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage")

import org.jlleitschuh.gradle.ktlint.reporter.ReporterType

plugins {
id("com.android.library")
kotlin("android")
id("org.jlleitschuh.gradle.ktlint")
id("com.google.devtools.ksp")
kotlin("kapt")
id("com.google.dagger.hilt.android")
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.ktlint)
id("spacedawn.android.hilt")
alias(libs.plugins.ksp)
}

android {
Expand Down Expand Up @@ -61,16 +62,11 @@ dependencies {

implementation(libs.androidx.corektx)
implementation(libs.androidx.appcompat)
// implementation("com.google.android.material:material:1.5.0")

// Retrofit
implementation(libs.bundles.retrofit)
ksp(libs.moshi.codegen)

// Hilt
implementation(libs.hilt.android)
kapt(libs.hilt.android.compiler)

// Room
implementation(libs.bundles.room)
ksp(libs.room.compiler)
Expand All @@ -91,7 +87,3 @@ dependencies {

androidTestImplementation(libs.androidx.test.core)
}

kapt {
correctErrorTypes = true
}
8 changes: 5 additions & 3 deletions domain/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
@file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage")

import org.jlleitschuh.gradle.ktlint.reporter.ReporterType

plugins {
id("java-library")
id("org.jetbrains.kotlin.jvm")
id("com.google.devtools.ksp")
id("org.jlleitschuh.gradle.ktlint")
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.ksp)
alias(libs.plugins.ktlint)
}

java {
Expand Down
23 changes: 14 additions & 9 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ test_junit = "4.13.2"
truth = "1.1.4"
androidx_test_extensions = "1.1.3"
androidx_test_core = "2.1.0"
material = "1.10.0"

[libraries]
# Project
Expand Down Expand Up @@ -90,8 +91,8 @@ hilt_work = { module = "androidx.hilt:hilt-work", version.ref = "hilt_work" }
hilt_compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hilt_compiler" }

# Coroutines
coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" }
coroutines_core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
coroutines_test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" }

# Coil
coil = { module = "io.coil-kt:coil-compose", version.ref = "coil" }
Expand All @@ -104,6 +105,9 @@ kotlin_immutable_collections = { module = "org.jetbrains.kotlinx:kotlinx-collect
androidx_annotations = { module = "androidx.annotation:annotation", version = "1.6.0" }
java_inject = { module = "javax.inject:javax.inject", version = "1" }

build_agp = { module = "com.android.tools.build:gradle", version.ref = "android_gradle_plugin" }
build_kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }

# Test
test_junit = { module = "junit:junit", version.ref = "test_junit" }
androidx_test_extensions = { module = "androidx.test.ext:junit", version.ref = "androidx_test_extensions" }
Expand All @@ -112,17 +116,18 @@ google_truth = { module = "com.google.truth:truth", version.ref = "truth" }
androidx_test_core = { module = "androidx.arch.core:core-testing", version.ref = "androidx_test_core" }
mockito_core = { module = "org.mockito:mockito-core", version = "5.3.1" }
mockito_kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version = "5.0.0" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }

[plugins]
android_application = { id = "com.android.application", version.ref = "android_gradle_plugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin_android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin_jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
ktlint_plugin = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
hilt-plugin = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
ksp-plugin = { id = "com.google.devtools.ksp", version.ref = "ksp" }
android-library = { id = "com.android.library", version.ref = "android_gradle_plugin" }
android-java-library = { id = "java-library", version.ref = "android_gradle_plugin" }
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }
kotlin_kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
hilt= { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
android_library = { id = "com.android.library", version.ref = "android_gradle_plugin" }

[bundles]
compose = ["compose-ui", "compose_graphics", "compose_tooling_preview", "material_3", "compose_lifecycle"]
Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
pluginManagement {
includeBuild("build-logic")
repositories {
google()
mavenCentral()
Expand Down

0 comments on commit 592ddc1

Please sign in to comment.