// 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.tapadoo' 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\\.android\\.tools\\..*' includeGroupByRegex "com\\.google\\.android\\..*" includeGroup 'com.google.firebase' includeGroup 'com.android' includeGroup 'com.android.tools' } } mavenCentral { content { includeGroup 'com.adevinta.android' includeGroup 'com.airbnb.android' includeGroup 'com.almworks.sqlite4java' includeGroup 'com.arthenica' includeGroup 'com.atlassian.commonmark' includeGroup 'com.atlassian.pom' includeGroup 'com.beust' 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.javaparser' includeGroup 'com.github.piasy' includeGroup 'com.google' includeGroup 'com.google.auto.service' includeGroup 'com.google.auto.value' 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.jimfs' includeGroup 'com.google.protobuf' includeGroup 'com.google.zxing' includeGroup 'com.googlecode.htmlcompressor' includeGroup 'com.googlecode.json-simple' includeGroup 'com.googlecode.libphonenumber' includeGroup 'com.ibm.icu' includeGroup 'com.jakewharton.android.repackaged' includeGroup 'com.jakewharton.timber' includeGroup 'com.linkedin.dexmaker' 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.sun.activation' includeGroup 'com.sun.istack' includeGroup 'com.sun.xml.bind' includeGroup 'com.sun.xml.bind.mvn' includeGroup 'com.sun.xml.fastinfoset' includeGroup 'com.thoughtworks.qdox' includeGroup 'com.vanniktech' includeGroup 'commons-cli' includeGroup 'commons-codec' includeGroup 'commons-io' includeGroup 'commons-logging' includeGroup 'info.picocli' includeGroup 'io.arrow-kt' includeGroup 'io.github.reactivecircus.flowbinding' includeGroup 'io.jsonwebtoken' includeGroup 'io.kindedj' includeGroup 'io.mockk' includeGroup 'io.noties.markwon' includeGroup 'io.reactivex.rxjava2' includeGroup 'io.realm' includeGroup 'it.unimi.dsi' includeGroup 'jakarta.activation' includeGroup 'jakarta.xml.bind' includeGroup 'javax.annotation' includeGroup 'javax.inject' includeGroup 'jline' includeGroup 'jp.wasabeef' includeGroup 'junit' includeGroup 'me.leolin' includeGroup 'me.saket' includeGroup 'net.bytebuddy' includeGroup 'net.java' includeGroup 'net.java.dev.jna' includeGroup 'net.lachlanmckee' includeGroup 'net.ltgt.gradle.incap' includeGroup 'net.sf.jopt-simple' includeGroup 'net.sf.kxml' includeGroup 'nl.dionsegijn' includeGroup 'org.amshove.kluent' includeGroup 'org.apache' includeGroup 'org.apache.ant' includeGroup 'org.apache.commons' includeGroup 'org.apache.httpcomponents' includeGroup 'org.apache.sanselan' includeGroup 'org.bouncycastle' includeGroup 'org.checkerframework' includeGroup 'org.codehaus' includeGroup 'org.codehaus.groovy' includeGroup 'org.codehaus.mojo' includeGroup 'org.eclipse.ee4j' includeGroup 'org.glassfish.jaxb' includeGroup 'org.hamcrest' includeGroup 'org.jetbrains' includeGroup 'org.jetbrains.intellij.deps' includeGroup 'org.jetbrains.kotlin' includeGroup 'org.jetbrains.kotlinx' includeGroup 'org.jsoup' includeGroup 'org.junit' includeGroup 'org.junit.jupiter' includeGroup 'org.junit.platform' includeGroup 'org.jvnet.staxex' includeGroup 'org.mockito' includeGroup 'org.mongodb' includeGroup 'org.objenesis' includeGroup 'org.opentest4j' includeGroup 'org.ow2' includeGroup 'org.ow2.asm' includeGroup 'org.ow2.asm' includeGroup 'org.reactivestreams' includeGroup 'org.robolectric' includeGroup 'org.slf4j' includeGroup 'org.sonatype.oss' includeGroup 'org.testng' includeGroup 'org.threeten' includeGroup 'xerces' includeGroup 'xml-apis' } } jcenter { content { includeGroup 'com.amulyakhare' includeGroup 'com.danikula' includeGroup 'com.otaliastudios' 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=' // 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", "**/*.*" // } // } //}