element-android/build.gradle

261 lines
9.9 KiB
Groovy

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
apply from: 'dependencies.gradle'
repositories {
google()
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
// Release notes of Android Gradle Plugin (AGP):
// https://developer.android.com/studio/releases/gradle-plugin
classpath libs.gradle.gradlePlugin
classpath libs.gradle.kotlinPlugin
classpath libs.gradle.hiltPlugin
classpath 'com.google.gms:google-services:4.3.10'
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3'
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.4'
classpath "com.likethesalad.android:string-reference:1.2.2"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
// ktlint Plugin
plugins {
id "org.jlleitschuh.gradle.ktlint" version "10.2.0"
}
allprojects {
apply plugin: "org.jlleitschuh.gradle.ktlint"
repositories {
// For olm library.
maven {
url 'https://gitlab.matrix.org/api/v4/projects/27/packages/maven'
content {
includeGroup 'org.matrix.android'
}
}
maven {
url 'https://jitpack.io'
content {
includeGroup 'com.github.Armen101'
includeGroup 'com.github.BillCarsonFr'
includeGroup 'com.github.chrisbanes'
includeGroup 'com.github.hyuwah'
includeGroup 'com.github.jetradarmobile'
includeGroup 'com.github.vector-im'
includeGroup 'com.github.yalantis'
includeGroup 'com.github.Zhuinden'
}
}
// Jitsi repo
maven {
url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-3.10.0"
// Note: to test Jitsi release you can use a local file like this:
// url "file:///Users/bmarty/workspaces/jitsi_libre_maven/android-sdk-3.10.0"
content {
includeGroup 'com.facebook.react'
includeGroup 'org.jitsi.react'
includeGroup 'org.webkit'
}
}
google {
content {
includeGroupByRegex "androidx\\..*"
includeGroupByRegex "com\\.google\\.android\\..*"
includeGroup 'com.android.tools.build'
includeGroup 'com.google.firebase'
}
}
mavenCentral {
content {
includeGroup 'com.airbnb.android'
includeGroup 'com.arthenica'
includeGroup 'com.atlassian.commonmark'
includeGroup 'com.atlassian.pom'
includeGroup 'com.davemorrissey.labs'
includeGroup 'com.dropbox.core'
includeGroup 'com.facebook.fresco'
includeGroup 'com.facebook.infer.annotation'
includeGroup 'com.facebook.soloader'
includeGroup 'com.facebook.stetho'
includeGroup 'com.fasterxml'
includeGroup 'com.fasterxml.jackson'
includeGroup 'com.fasterxml.jackson.core'
includeGroup 'com.gabrielittner.threetenbp'
includeGroup 'com.getkeepsafe.relinker'
includeGroup 'com.github.bumptech.glide'
includeGroup 'com.github.filippudak'
includeGroup 'com.github.filippudak.progresspieview'
includeGroup 'com.github.piasy'
includeGroup 'com.google.auto.service'
includeGroup 'com.google.code.findbugs'
includeGroup 'com.google.code.gson'
includeGroup 'com.google.dagger'
includeGroup 'com.google.devtools.ksp'
includeGroup 'com.google.errorprone'
includeGroup 'com.google.googlejavaformat'
includeGroup 'com.google.guava'
includeGroup 'com.google.j2objc'
includeGroup 'com.google.zxing'
includeGroup 'com.googlecode.htmlcompressor'
includeGroup 'com.googlecode.libphonenumber'
includeGroup 'com.jakewharton.timber'
includeGroup 'com.nulab-inc'
includeGroup 'com.otaliastudios.opengl'
includeGroup 'com.parse.bolts'
includeGroup 'com.squareup'
includeGroup 'com.squareup.duktape'
includeGroup 'com.squareup.moshi'
includeGroup 'com.squareup.okhttp3'
includeGroup 'com.squareup.okio'
includeGroup 'com.squareup.retrofit2'
includeGroup 'com.vanniktech'
includeGroup 'commons-cli'
includeGroup 'commons-codec'
includeGroup 'io.arrow-kt'
includeGroup 'io.github.reactivecircus.flowbinding'
includeGroup 'io.jsonwebtoken'
includeGroup 'io.kindedj'
includeGroup 'io.noties.markwon'
includeGroup 'io.reactivex.rxjava2'
includeGroup 'io.realm'
includeGroup 'javax.annotation'
includeGroup 'javax.inject'
includeGroup 'jp.wasabeef'
includeGroup 'me.leolin'
includeGroup 'me.saket'
includeGroup 'net.ltgt.gradle.incap'
includeGroup 'nl.dionsegijn'
includeGroup 'org.apache'
includeGroup 'org.apache.commons'
includeGroup 'org.apache.sanselan'
includeGroup 'org.checkerframework'
includeGroup 'org.jetbrains'
includeGroup 'org.jetbrains.intellij.deps'
includeGroup 'org.jetbrains.kotlin'
includeGroup 'org.jetbrains.kotlinx'
includeGroup 'org.mongodb'
includeGroup 'org.ow2'
includeGroup 'org.ow2.asm'
includeGroup 'org.ow2.asm'
includeGroup 'org.reactivestreams'
includeGroup 'org.slf4j'
includeGroup 'org.sonatype.oss'
includeGroup 'org.threeten'
}
}
jcenter {
content {
includeGroup 'com.amulyakhare'
includeGroup 'com.danikula'
includeGroup 'com.otaliastudios'
includeGroup 'com.tapadoo.android'
includeGroup 'com.yqritc'
includeGroup 'dk.ilios'
includeGroup 'im.dlg'
includeGroup 'me.dm7.barcodescanner'
includeGroup 'me.gujun.android'
}
}
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
// Warnings are potential errors, so stop ignoring them
// You can override by passing `-PallWarningsAsErrors=false` in the command line
kotlinOptions.allWarningsAsErrors = project.getProperties().getOrDefault("allWarningsAsErrors", "true").toBoolean()
}
// Fix "Java heap space" issue
tasks.withType(org.jlleitschuh.gradle.ktlint.tasks.BaseKtLintCheckTask).configureEach {
it.workerMaxHeapSize.set("2G")
}
// See https://github.com/JLLeitschuh/ktlint-gradle#configuration
ktlint {
android = true
ignoreFailures = false
enableExperimentalRules = true
// display the corresponding rule
verbose = true
disabledRules = [
"spacing-between-declarations-with-comments",
"no-multi-spaces",
"experimental:spacing-between-declarations-with-annotations",
"experimental:annotation"
]
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
apply plugin: 'org.sonarqube'
// To run a sonar analysis:
// Run './gradlew sonarqube -Dsonar.login=<REPLACE_WITH_SONAR_KEY>'
// The SONAR_KEY is stored in passbolt
sonarqube {
properties {
property "sonar.projectName", "Element-Android"
property "sonar.projectKey", "im.vector.app.android"
property "sonar.host.url", "https://sonarcloud.io"
property "sonar.projectVersion", project(":vector").android.defaultConfig.versionName
property "sonar.sourceEncoding", "UTF-8"
property "sonar.links.homepage", "https://github.com/vector-im/element-android/"
property "sonar.links.ci", "https://buildkite.com/matrix-dot-org/element-android"
property "sonar.links.scm", "https://github.com/vector-im/element-android/"
property "sonar.links.issue", "https://github.com/vector-im/element-android/issues"
property "sonar.organization", "new_vector_ltd_organization"
property "sonar.login", project.hasProperty("SONAR_LOGIN") ? SONAR_LOGIN : "invalid"
}
}
project(":vector") {
sonarqube {
properties {
property "sonar.sources", project(":vector").android.sourceSets.main.java.srcDirs
// exclude source code from analyses separated by a colon (:)
// Exclude Java source
property "sonar.exclusions", "**/BugReporterMultipartBody.java"
}
}
}
project(":diff-match-patch") {
sonarqube {
skipProject = true
}
}
//project(":matrix-sdk-android") {
// sonarqube {
// properties {
// property "sonar.sources", project(":matrix-sdk-android").android.sourceSets.main.java.srcDirs
// // exclude source code from analyses separated by a colon (:)
// // property "sonar.exclusions", "**/*.*"
// }
// }
//}
//
//project(":matrix-sdk-android-rx") {
// sonarqube {
// properties {
// property "sonar.sources", project(":matrix-sdk-android-rx").android.sourceSets.main.java.srcDirs
// // exclude source code from analyses separated by a colon (:)
// // property "sonar.exclusions", "**/*.*"
// }
// }
//}