Last active
February 6, 2019 01:43
-
-
Save alwarren/26c3052a6b5239c693152d945bdf5e0f to your computer and use it in GitHub Desktop.
Kotlin Build System
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.text.DateFormat | |
import java.text.SimpleDateFormat | |
// Top-level build file where you can add configuration options common to all sub-projects/modules. | |
buildscript { | |
apply from: 'buildsystem/dependencies.gradle' | |
addRepos(repositories) | |
dependencies { | |
classpath deps.android_gradle_plugin | |
classpath deps.kotlin.kotlin_gradle_plugin | |
// NOTE: Do not place your application dependencies here; they belong | |
// in the individual module build.gradle files | |
} | |
} | |
allprojects { | |
addRepos(repositories) | |
} | |
task clean(type: Delete) { | |
delete rootProject.buildDir | |
} | |
static def getDateTime() { | |
DateFormat df = new SimpleDateFormat("YYYYMMDDHHmm") | |
return df.format(new Date()) | |
} | |
task _projectZip(type:Zip) { | |
description = 'Makes a single zip file suitable for import.' | |
from projectDir | |
baseName = "project-files-" + getDateTime() | |
include 'build.gradle' | |
include 'gradle.properties' | |
include 'gradlew' | |
include 'gradlew.bat' | |
include 'settings.gradle' | |
include 'gradle/**' | |
exclude 'build' | |
exclude '.gradle' | |
exclude '*.iml' | |
exclude 'local.properties' | |
include 'app/**' | |
exclude 'app/*.iml' | |
exclude 'app/build' | |
include '.idea/**' | |
exclude '.idea/workspace.xml' | |
exclude '.idea/libraries' | |
include 'documents/**' | |
destinationDir file('zip') | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apply plugin: 'com.android.application' | |
apply plugin: 'kotlin-android' | |
apply plugin: 'kotlin-android-extensions' | |
apply plugin: 'kotlin-kapt' | |
android { | |
compileSdkVersion build_versions.target_sdk | |
defaultConfig { | |
applicationId "com.project.example" | |
minSdkVersion build_versions.min_sdk | |
targetSdkVersion build_versions.target_sdk | |
versionCode 1 | |
versionName "1.0" | |
testInstrumentationRunner deps.test.instrumentation | |
vectorDrawables.useSupportLibrary = true | |
} | |
buildTypes { | |
release { | |
minifyEnabled false | |
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | |
} | |
} | |
} | |
dependencies { | |
implementation fileTree(dir: 'libs', include: ['*.jar']) | |
implementation deps.kotlin.stdlib | |
implementation deps.android.appcompat | |
implementation deps.kotlin.core | |
implementation deps.android.material | |
implementation deps.android.constraint_layout | |
implementation deps.android.legacy_support | |
implementation deps.android.vector_drawable | |
testImplementation deps.test.junit4 | |
androidTestImplementation deps.test.runner | |
androidTestImplementation deps.test.espresso | |
// coroutines | |
implementation deps.kotlin.coroutines | |
implementation deps.kotlin.coroutines_android | |
// timber | |
implementation deps.timber.base | |
// kodein | |
implementation deps.kodein.base | |
implementation deps.kodein.android | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ext.deps = [:] | |
def versions = [:] | |
versions.gradle = '3.3.0' | |
versions.android_gradle_plugin = '3.3.0' | |
versions.appcompat = '1.1.0-alpha01' | |
versions.constraint_layout = '2.0.0-alpha3' | |
versions.kotlin = '1.3.11' | |
versions.kotlin_core = '1.1.0-alpha04' | |
versions.coroutines = '1.1.0' | |
versions.room = '2.1.0-alpha03' | |
versions.navigation = '1.0.0-alpha08' | |
versions.kodein = '5.3.0' | |
versions.lifecycle = '2.0.0' | |
versions.retrofit = '2.5.0' | |
versions.retrofit_coroutines = '0.9.2' | |
versions.gson = '2.8.5' | |
versions.junit4 = '4.12' | |
versions.junit5 = '5.3.0' | |
versions.test_runner = '1.1.1' | |
versions.espresso = '3.1.1' | |
versions.okhttp = '3.12.1' | |
versions.kodein = '5.3.0' | |
versions.timber = '4.7.1' | |
versions.threeten = '1.1.0' | |
versions.material = '1.1.0-alpha03' | |
versions.kluent = '1.46' | |
versions.mockito = '2.23.4' | |
versions.androidx_test = '1.1.0' | |
versions.legacy_support = '1.0.0' | |
def deps = [:] | |
def android = [:] | |
android.appcompat = "androidx.appcompat:appcompat:$versions.appcompat" | |
android.constraint_layout = "androidx.constraintlayout:constraintlayout:$versions.constraint_layout" | |
android.lifecycle_extensions = "androidx.lifecycle:lifecycle-extensions:$versions.lifecycle" | |
android.lifecycle_compiler = "androidx.lifecycle:lifecycle-compiler:$versions.lifecycle" | |
android.viewmodel = "androidx.lifecycle:lifecycle-viewmodel-ktx:$versions.lifecycle" | |
android.material = "com.google.android.material:material:$versions.material" | |
android.legacy_support = "androidx.legacy:legacy-support-v4:$versions.legacy_support" | |
android.vector_drawable = "androidx.vectordrawable:vectordrawable:$versions.appcompat" | |
deps.android = android | |
def kotlin = [:] | |
kotlin.stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin" | |
kotlin.core = "androidx.core:core-ktx:$versions.kotlin_core" | |
kotlin.coroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$versions.coroutines" | |
kotlin.coroutines_android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$versions.coroutines" | |
kotlin.kotlin_gradle_plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin" | |
deps.kotlin = kotlin | |
def gson = [:] | |
gson.base = "com.google.code.gson:gson:$versions.gson" | |
deps.gson = gson | |
def timber = [:] | |
timber.base = "com.jakewharton.timber:timber:$versions.timber" | |
deps.timber = timber | |
def threeten = [:] | |
threeten.base = "com.jakewharton.threetenabp:threetenabp:$versions.threeten" | |
deps.threeten = threeten | |
def retrofit = [:] | |
retrofit.base = "com.squareup.retrofit2:retrofit:$versions.retrofit" | |
retrofit.gson = "com.squareup.retrofit2:converter-gson:$versions.retrofit" | |
retrofit.coroutines = "com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:$versions.retrofit_coroutines" | |
retrofit.moshi = "com.squareup.retrofit2:converter-moshi:$versions.retrofit" | |
deps.retrofit = retrofit | |
def okhttp = [:] | |
okhttp.mockwebserver = "com.squareup.okhttp3:mockwebserver:$versions.okhttp" | |
deps.okhttp = okhttp | |
def kodein = [:] | |
kodein.base = "org.kodein.di:kodein-di-generic-jvm:$versions.kodein" | |
kodein.android = "org.kodein.di:kodein-di-framework-android-x:$versions.kodein" | |
deps.kodein = kodein | |
def test = [:] | |
test.junit4 = "junit:junit:$versions.junit4" | |
test.junit5 = "org.junit.jupiter:junit-jupiter-api:$versions.junit5" | |
test.runner = "androidx.test:runner:$versions.test_runner" | |
test.espresso = "androidx.test.espresso:espresso-core:$versions.espresso" | |
test.kluent = "org.amshove.kluent:kluent:$versions.kluent" | |
test.mockito = "org.mockito:mockito-core:$versions.mockito" | |
test.androidx_test = "androidx.test:core:$versions.androidx_test" | |
test.androidx_test_lifecycle = "androidx.arch.core:core-testing:$versions.lifecycle" | |
test.instrumentation = "androidx.test.runner.AndroidJUnitRunner" | |
deps.test = test | |
def build_versions = [:] | |
build_versions.min_sdk = 19 | |
build_versions.target_sdk = 28 | |
ext.build_versions = build_versions | |
deps.android_gradle_plugin = "com.android.tools.build:gradle:$versions.android_gradle_plugin" | |
ext.deps = deps | |
static def addRepos(RepositoryHandler handler) { | |
handler.jcenter() | |
handler.google() | |
} | |
ext.addRepos = this.&addRepos |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment