Last active
February 12, 2020 13:29
-
-
Save ed-george/6f9cf150daee31f46c47a0ba980fe5a0 to your computer and use it in GitHub Desktop.
A small example of how to generate a report for a Gradle Project's dependencies as per - https://ed-george.github.io/articles/12-02-2020/versioning
This file contains 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
// APP Level app/build.gradle | |
apply plugin: 'com.android.application' | |
apply plugin: 'kotlin-android' | |
apply plugin: 'kotlin-android-extensions' | |
apply plugin: 'kotlin-kapt' | |
apply from: '../dependency-update.gradle' | |
android { | |
compileSdkVersion build_versions.compile_sdk | |
compileOptions { | |
sourceCompatibility build_versions.java | |
targetCompatibility build_versions.java | |
} | |
defaultConfig { | |
applicationId "com.example" | |
minSdkVersion build_versions.min_sdk | |
targetSdkVersion build_versions.target_sdk | |
versionCode app.versionCode as int | |
versionName app.versionName as String | |
} | |
} | |
dependencies { | |
// Groups relevant to module here | |
kotlin() | |
androidx() | |
network() | |
} |
This file contains 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
// Top-level gradle file | |
buildscript { | |
apply from: 'versions.gradle' | |
addRepos(repositories) | |
dependencies { | |
classpath plugin.kotlin | |
classpath plugin.gradle | |
classpath plugin.gradle_update_version | |
} | |
} | |
allprojects { | |
addRepos(repositories) | |
repositories { | |
dependencies { apply from: "$rootProject.rootDir/versions-groups.gradle" } | |
} | |
} |
This file contains 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 groovy.xml.MarkupBuilder | |
apply plugin: 'com.github.ben-manes.versions' | |
def gitSha() { | |
return 'git rev-parse --short HEAD'.execute([], rootDir).text.trim() | |
} | |
dependencyUpdates { | |
outputFormatter = { result -> | |
def updatable = result.outdated.dependencies | |
if (!updatable.isEmpty()) { | |
def filepath = "deps/${project.name}-dependencies-result.html" | |
def file = new File(filepath) | |
if (!file.getParentFile().exists()) { | |
file.getParentFile().mkdirs() | |
} | |
def fileWriter = new FileWriter(file) | |
def html = new MarkupBuilder(fileWriter) | |
html.html { | |
head { | |
style("table{width:100%}table,td,th{border:1px solid #231a4f;border-collapse:collapse}td,th{padding:15px;text-align:left}table tr:nth-child(even){background-color:#f4f9fb}table tr:nth-child(odd){background-color:#d6e5e9}table th{background-color:#231a4f;color:#f4f9fb}") | |
} | |
body { | |
h3("Module: " + project.name) | |
h3("Git commit: " + gitSha()) | |
h4("Last updated: " + LocalDateTime.now()) | |
table { | |
tr { | |
th("Group") | |
th("Module") | |
th("Current version") | |
th("Latest version") | |
} | |
updatable.each { dependency -> | |
tr { | |
td(dependency.group) | |
td(dependency.name) | |
td(dependency.version) | |
td(dependency.available.release ?: dependency.available.milestone) | |
} | |
} | |
} | |
} | |
} | |
println "[DEPS] Written file: ${filepath}" | |
} | |
} | |
} |
This file contains 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
def Group(Closure closure) { | |
closure.delegate = dependencies | |
return closure | |
} | |
ext { | |
kotlin = Group { | |
implementation deps.core.kotlin_stdlib | |
} | |
androidx = Group { | |
implementation deps.androidx.appcompat | |
implementation deps.androidx.ktx_core | |
implementation deps.androidx.ktx_fragment | |
} | |
network = Group { | |
implementation deps.network.retrofit_core | |
implementation deps.network.retrofit_converter_gson | |
implementation deps.network.log_interceptor | |
implementation deps.network.glide_core | |
kapt deps.network.glide_compiler | |
} | |
} |
This file contains 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 = [:] | |
// Top level KVPs | |
def versions = [:] | |
def deps = [:] | |
// def means we're making a local variable. | |
// We'll use this map to build our deps key/value pairs below | |
// Kotlin Version | |
versions.kotlin = '1.3.50' | |
// ###################################################################################### | |
// # Build Versions | |
// ###################################################################################### | |
// Android related dependencies | |
def build_versions = [:] | |
build_versions.min_sdk = 23 | |
build_versions.target_sdk = 29 | |
build_versions.compile_sdk = 29 | |
build_versions.java = JavaVersion.VERSION_1_8 | |
ext.build_versions = build_versions | |
// ###################################################################################### | |
// # Plugins | |
// ###################################################################################### | |
def plugins_version = [:] | |
plugins_version.kotlin_plugin = versions.kotlin | |
plugins_version.android_gradle_plugin = '3.5.3' | |
plugins_version.gradle_update_version = '0.21.0' | |
versions.plugins = plugins_version | |
def plugins = [:] | |
plugins.kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.plugins.kotlin_plugin" | |
plugins.gradle = "com.android.tools.build:gradle:$versions.plugins.android_gradle_plugin" | |
plugins.gradle_update_version = "com.github.ben-manes:gradle-versions-plugin:$versions.plugins.gradle_update_version" | |
ext.plugin = plugins | |
// ###################################################################################### | |
// # Dependencies | |
// ###################################################################################### | |
// CORE | |
def core_deps = [:] | |
core_deps.kotlin_stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin" | |
deps.core = core_deps | |
// ANDROIDX | |
def androidx_version = [:] | |
androidx_version.appcompat = '1.1.0' | |
androidx_version.ktx_core = '1.2.0-rc01' | |
androidx_version.ktx_fragment = '1.2.0-rc02' | |
versions.androidx = androidx_version | |
def androidx_deps = [:] | |
androidx_deps.appcompat = "androidx.appcompat:appcompat:$versions.androidx.appcompat" | |
androidx_deps.ktx_core = "androidx.core:core-ktx:$versions.androidx.ktx_core" | |
androidx_deps.ktx_fragment = "androidx.fragment:fragment-ktx:$versions.androidx.ktx_fragment" | |
deps.androidx = androidx_deps | |
// NETWORKING | |
def network_version = [:] | |
network_version.retrofit = '2.6.2' | |
network_version.glide = '4.9.0' | |
network_version.okhttp = '3.14.2' | |
versions.network = network_version | |
def network_deps = [:] | |
network_deps.retrofit_core = "com.squareup.retrofit2:retrofit:$versions.network.retrofit" | |
network_deps.retrofit_converter_gson = "com.squareup.retrofit2:converter-gson:$versions.network.retrofit" | |
network_deps.log_interceptor = "com.squareup.okhttp3:logging-interceptor:$versions.network.okhttp" | |
network_deps.glide_core = "com.github.bumptech.glide:glide:$versions.network.glide" | |
network_deps.glide_compiler = "com.github.bumptech.glide:compiler:$versions.network.glide" | |
deps.network = network_deps | |
// Add your dependencies here... | |
// ###################################################################################### | |
// # Add Repo Method | |
// ###################################################################################### | |
static def addRepos(RepositoryHandler handler) { | |
handler.google() | |
handler.jcenter() | |
handler.maven { url 'https://plugins.gradle.org/m2/' } | |
} | |
ext.addRepos = this.&addRepos | |
// Create global level dependencies | |
ext.deps = deps |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment