Skip to content

Commit

Permalink
Integrate the dependency-guard Gradle plugin
Browse files Browse the repository at this point in the history
The plugin is applied to every module of the project, on the `runtime*Classpath`
  • Loading branch information
MGaetan89 committed Feb 25, 2024
1 parent 1d8e66c commit cc8607c
Show file tree
Hide file tree
Showing 42 changed files with 341 additions and 4 deletions.
28 changes: 28 additions & 0 deletions .github/workflows/dependency_guard.yml
@@ -0,0 +1,28 @@
name: Dependency guard

on:
push:
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
dependency-guard:
name: Dependency guard
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: 17

- uses: gradle/actions/setup-gradle@v3

- name: Run dependency guard
run: ./gradlew dependencyGuard
2 changes: 2 additions & 0 deletions annotations/build.gradle
@@ -1,8 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

dependencies {
compileOnly libs.findbugs.jsr305
Expand Down
Empty file.
1 change: 1 addition & 0 deletions build.gradle
Expand Up @@ -18,6 +18,7 @@ buildscript {
classpath libs.spotless.gradle
classpath libs.detekt.gradle
classpath libs.roborazzi.gradle
classpath libs.dependency.guard.gradle
}
}

Expand Down
@@ -0,0 +1,28 @@
package org.robolectric.gradle

import org.gradle.api.Plugin
import org.gradle.api.Project

class DependencyGuardPlugin implements Plugin<Project> {
Closure<Project> doApply = {
project.apply plugin: "com.dropbox.dependency-guard"

dependencyGuard {
def configurationName
if (project.plugins.hasPlugin("com.android.library")) {
configurationName = "releaseRuntimeClasspath"
} else {
configurationName = "runtimeClasspath"
}

configuration(configurationName)
}
}

@Override
void apply(Project project) {
doApply.delegate = project
doApply.resolveStrategy = Closure.DELEGATE_ONLY
doApply()
}
}
2 changes: 2 additions & 0 deletions errorprone/build.gradle
@@ -1,9 +1,11 @@
import org.gradle.internal.jvm.Jvm
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

// Disable annotation processor for tests
compileTestJava {
Expand Down
26 changes: 26 additions & 0 deletions errorprone/dependencies/runtimeClasspath.txt
@@ -0,0 +1,26 @@
aopalliance:aopalliance:1.0
com.github.ben-manes.caffeine:caffeine:3.0.5
com.github.kevinstern:software-and-algorithms:1.0
com.google.auto.service:auto-service-annotations:1.0.1
com.google.auto.value:auto-value-annotations:1.9
com.google.auto:auto-common:1.2.1
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.19.1
com.google.errorprone:error_prone_check_api:2.19.1
com.google.errorprone:error_prone_core:2.19.1
com.google.errorprone:error_prone_refaster:2.19.1
com.google.errorprone:error_prone_type_annotations:2.19.1
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.inject:guice:5.1.0
com.google.j2objc:j2objc-annotations:1.3
com.google.protobuf:protobuf-java:3.19.2
io.github.java-diff-utils:java-diff-utils:4.0
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.12.0
org.checkerframework:dataflow-errorprone:3.27.0
org.eclipse.jgit:org.eclipse.jgit:4.4.1.201607150455-r
org.pcollections:pcollections:3.1.4
5 changes: 5 additions & 0 deletions gradle/libs.versions.toml
Expand Up @@ -126,6 +126,9 @@ play-services-base-for-shadows = "8.4.0"
# https://developers.google.com/android/guides/releases
play-services-basement = "18.0.1"

# https://github.com/dropbox/dependency-guard/releases
dependency-guard-plugin = "0.5.0"

[libraries]
android-gradle = { module = "com.android.tools.build:gradle", version.ref = "android-gradle" }
kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
Expand Down Expand Up @@ -241,6 +244,8 @@ play-services-basement-for-shadows = { module = "com.google.android.gms:play-ser

play-services-basement = { module = "com.google.android.gms:play-services-basement", version.ref = "play-services-basement" }

dependency-guard-gradle = { module = "com.dropbox.dependency-guard:dependency-guard", version.ref = "dependency-guard-plugin" }

[bundles]
play-services-base-for-shadows = ["androidx-fragment-for-shadows", "play-services-base-for-shadows", "play-services-basement-for-shadows"]
powermock = ["powermock-module-junit4", "powermock-module-junit4-rule", "powermock-api-mockito2", "powermock-classloading-xstream"]
Expand Down
2 changes: 2 additions & 0 deletions junit/build.gradle
@@ -1,8 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

dependencies {
api project(":annotations")
Expand Down
15 changes: 15 additions & 0 deletions junit/dependencies/runtimeClasspath.txt
@@ -0,0 +1,15 @@
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.12.0
org.ow2.asm:asm-analysis:9.6
org.ow2.asm:asm-commons:9.6
org.ow2.asm:asm-tree:9.6
org.ow2.asm:asm-util:9.6
org.ow2.asm:asm:9.6
2 changes: 2 additions & 0 deletions nativeruntime/build.gradle
@@ -1,8 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

if (System.getenv('PUBLISH_NATIVERUNTIME_DIST_COMPAT') == "true") {
apply plugin: 'maven-publish'
Expand Down
16 changes: 16 additions & 0 deletions nativeruntime/dependencies/runtimeClasspath.txt
@@ -0,0 +1,16 @@
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.12.0
org.ow2.asm:asm-analysis:9.6
org.ow2.asm:asm-commons:9.6
org.ow2.asm:asm-tree:9.6
org.ow2.asm:asm-util:9.6
org.ow2.asm:asm:9.6
org.robolectric:nativeruntime-dist-compat:1.0.8
2 changes: 2 additions & 0 deletions pluginapi/build.gradle
@@ -1,8 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

dependencies {
compileOnly libs.findbugs.jsr305
Expand Down
7 changes: 7 additions & 0 deletions pluginapi/dependencies/runtimeClasspath.txt
@@ -0,0 +1,7 @@
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
org.checkerframework:checker-qual:3.12.0
2 changes: 2 additions & 0 deletions plugins/maven-dependency-resolver/build.gradle
@@ -1,11 +1,13 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: 'kotlin'
apply plugin: "com.diffplug.spotless"
apply plugin: DependencyGuardPlugin

spotless {
kotlin {
Expand Down
@@ -0,0 +1,11 @@
com.google.auto.value:auto-value-annotations:1.10.4
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.12.0
3 changes: 3 additions & 0 deletions preinstrumented/build.gradle
@@ -1,7 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin

plugins {
id "application"
}
apply plugin: 'java'
apply plugin: DependencyGuardPlugin

ext {
javaMainClass = "org.robolectric.preinstrumented.JarInstrumentor"
Expand Down
15 changes: 15 additions & 0 deletions preinstrumented/dependencies/runtimeClasspath.txt
@@ -0,0 +1,15 @@
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.12.0
org.ow2.asm:asm-analysis:9.6
org.ow2.asm:asm-commons:9.6
org.ow2.asm:asm-tree:9.6
org.ow2.asm:asm-util:9.6
org.ow2.asm:asm:9.6
2 changes: 2 additions & 0 deletions processor/build.gradle
@@ -1,9 +1,11 @@
import org.gradle.internal.jvm.Jvm
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

class GenerateSdksFileTask extends DefaultTask {
@OutputFile
Expand Down
15 changes: 15 additions & 0 deletions processor/dependencies/runtimeClasspath.txt
@@ -0,0 +1,15 @@
com.google.auto:auto-common:1.2.2
com.google.code.findbugs:jsr305:3.0.2
com.google.code.gson:gson:2.10.1
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.18.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:32.0.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:2.8
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.33.0
org.ow2.asm:asm-commons:9.6
org.ow2.asm:asm-tree:9.6
org.ow2.asm:asm:9.6
2 changes: 2 additions & 0 deletions resources/build.gradle
@@ -1,8 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

dependencies {
api project(":utils")
Expand Down
11 changes: 11 additions & 0 deletions resources/dependencies/runtimeClasspath.txt
@@ -0,0 +1,11 @@
com.google.auto.value:auto-value-annotations:1.10.4
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.12.0
2 changes: 2 additions & 0 deletions robolectric/build.gradle
@@ -1,8 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

dependencies {
annotationProcessor libs.auto.service
Expand Down
23 changes: 23 additions & 0 deletions robolectric/dependencies/runtimeClasspath.txt
@@ -0,0 +1,23 @@
androidx.test.espresso:espresso-idling-resource:3.5.1
androidx.test:monitor:1.6.1
com.almworks.sqlite4java:sqlite4java:1.0.392
com.google.auto.value:auto-value-annotations:1.10.4
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
com.ibm.icu:icu4j:74.2
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.bouncycastle:bcprov-jdk18on:1.77
org.checkerframework:checker-qual:3.12.0
org.conscrypt:conscrypt-openjdk-uber:2.5.2
org.ow2.asm:asm-analysis:9.6
org.ow2.asm:asm-commons:9.6
org.ow2.asm:asm-tree:9.6
org.ow2.asm:asm-util:9.6
org.ow2.asm:asm:9.6
org.robolectric:nativeruntime-dist-compat:1.0.8
2 changes: 2 additions & 0 deletions sandbox/build.gradle
@@ -1,8 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

dependencies {
annotationProcessor libs.auto.service
Expand Down
15 changes: 15 additions & 0 deletions sandbox/dependencies/runtimeClasspath.txt
@@ -0,0 +1,15 @@
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.12.0
org.ow2.asm:asm-analysis:9.6
org.ow2.asm:asm-commons:9.6
org.ow2.asm:asm-tree:9.6
org.ow2.asm:asm-util:9.6
org.ow2.asm:asm:9.6
2 changes: 2 additions & 0 deletions shadowapi/build.gradle
@@ -1,8 +1,10 @@
import org.robolectric.gradle.DependencyGuardPlugin
import org.robolectric.gradle.DeployedRoboJavaModulePlugin
import org.robolectric.gradle.RoboJavaModulePlugin

apply plugin: RoboJavaModulePlugin
apply plugin: DeployedRoboJavaModulePlugin
apply plugin: DependencyGuardPlugin

dependencies {
compileOnly libs.findbugs.jsr305
Expand Down
10 changes: 10 additions & 0 deletions shadowapi/dependencies/runtimeClasspath.txt
@@ -0,0 +1,10 @@
com.google.code.findbugs:jsr305:3.0.2
com.google.errorprone:error_prone_annotation:2.19.1
com.google.errorprone:error_prone_annotations:2.11.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
javax.annotation:javax.annotation-api:1.3.2
javax.inject:javax.inject:1
org.checkerframework:checker-qual:3.12.0

0 comments on commit cc8607c

Please sign in to comment.