Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate the dependency-guard Gradle plugin #8866

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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