Inspired on both Kotlin + buildSrc for Better Gradle Dependency Management and How to add Gradle dependencies using ‘foreach’
I've used _ as directory separator on file names since gists doesn't support full paths...
Inspired on both Kotlin + buildSrc for Better Gradle Dependency Management and How to add Gradle dependencies using ‘foreach’
I've used _ as directory separator on file names since gists doesn't support full paths...
| plugins { | |
| `kotlin-dsl` | |
| } |
| object Common { | |
| val libs = listOf( | |
| Libs.kotlin, | |
| Libs.kotshiApi, | |
| Libs.KotshiCompiler, | |
| Libs.jsr305, | |
| Libs.okhttp, | |
| Libs.moshi | |
| ) | |
| val testLibs = listOf( | |
| TestLibs.kotlinJunit, | |
| TestLibs.junit, | |
| TestLibs.mockito, | |
| TestLibs.assertj, | |
| TestLibs.mockitoKotlin, | |
| TestLibs.mockWebServer | |
| ) | |
| } |
| object Versions { | |
| const val KOTLIN = "1.2.21" | |
| //PLUGINS | |
| const val KOTLINTER = "1.5.0" | |
| const val DOKKA = "0.9.15" | |
| //LIBS | |
| const val COROUTINE = "0.22" | |
| const val KOTSHI = "0.3.0" | |
| const val OKHTTP = "3.9.0" | |
| const val MOSHI = "1.6.0-SNAPSHOT" | |
| const val JSR = "3.0.2" | |
| const val JSON = "20090211" | |
| //TEST | |
| const val JUNIT = "4.12" | |
| const val MOCKITO = "2.12.0" | |
| const val ASSERTJ = "3.8.0" | |
| const val MOCKITO_KOTLIN = "1.5.0" | |
| const val MOCKWEBSERVER = "852ce0b657" | |
| } | |
| private object Dependencies { | |
| const val KOTLIN = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.KOTLIN}" | |
| const val COROUTINES = "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.COROUTINE}" | |
| const val KOTSHI = "se.ansman.kotshi:api:${Versions.KOTSHI}" | |
| const val KOTSHI_COMPILER = "se.ansman.kotshi:compiler:${Versions.KOTSHI}" | |
| const val JSR305 = "com.google.code.findbugs:jsr305:${Versions.JSR}" | |
| const val OKHTTP = "com.squareup.okhttp3:okhttp:${Versions.OKHTTP}" | |
| const val MOSHI = "com.squareup.moshi:moshi:${Versions.MOSHI}" | |
| const val JSON = "org.json:json:${Versions.JSON}" | |
| } | |
| internal object Libs { | |
| val kotlin = Compile(Dependencies.KOTLIN) | |
| val coroutines = Compile(Dependencies.COROUTINES) | |
| val kotshiApi = Compile(Dependencies.KOTSHI) | |
| val KotshiCompiler = Kapt(Dependencies.KOTSHI_COMPILER) | |
| val jsr305 = CompileOnly(Dependencies.JSR305) | |
| val okhttp = Compile(Dependencies.OKHTTP) | |
| val moshi = Compile(Dependencies.MOSHI) | |
| val json = CompileOnly(Dependencies.JSON) | |
| } | |
| private object TestDependencies { | |
| const val KOTLIN_JUNIT = "org.jetbrains.kotlin:kotlin-test-junit:${Versions.KOTLIN}" | |
| const val JUNIT = "junit:junit:${Versions.JUNIT}" | |
| const val MOCKITO = "org.mockito:mockito-core:${Versions.MOCKITO}" | |
| const val ASSERTJ = "org.assertj:assertj-core:${Versions.ASSERTJ}" | |
| const val MOCKITO_KOTLIN = "com.nhaarman:mockito-kotlin-kt1.1:${Versions.MOCKITO_KOTLIN}" | |
| const val MOCKWEBSERVER = "com.github.luciofm:mockwebserver:${Versions.MOCKWEBSERVER}" | |
| } | |
| internal object TestLibs { | |
| val kotlinJunit = TestCompile(TestDependencies.KOTLIN_JUNIT) | |
| val junit = TestCompile(TestDependencies.JUNIT) | |
| val mockito = TestCompile(TestDependencies.MOCKITO) | |
| val assertj = TestCompile(TestDependencies.ASSERTJ) | |
| val mockitoKotlin = TestCompile(TestDependencies.MOCKITO_KOTLIN) | |
| val mockWebServer = TestCompile(TestDependencies.MOCKWEBSERVER) | |
| } | |
| private const val COMPILE = "compile" | |
| private const val COMPILE_ONLY = "compileOnly" | |
| private const val KAPT = "kapt" | |
| private const val TEST_COMPILE = "testCompile" | |
| sealed class Dependency(val configuration: String, val dependency: String) | |
| class Compile(dependency: String) : Dependency(COMPILE, dependency) | |
| class Kapt(dependency: String) : Dependency(KAPT, dependency) | |
| class CompileOnly(dependency: String) : Dependency(COMPILE_ONLY, dependency) | |
| class TestCompile(dependency: String) : Dependency(TEST_COMPILE, dependency) |
| apply plugin: 'java' | |
| apply plugin: 'kotlin' | |
| apply plugin: 'kotlin-kapt' | |
| dependencies { | |
| Common.libs.each { dep -> | |
| add(dep.configuration, dep.dependency) | |
| } | |
| Common.testLibs.each { dep -> | |
| add(dep.configuration, dep.dependency) | |
| } | |
| } |