Use Gradle's version catalog

This moves our depedencies into a plain file that can be read and
updated by tooling. While the current tooling is not particularly better
than just using gradle-versions-plugin, it should put us on better
footing. gradle-versions-plugin is actually pretty nice, but will be
incompatible with Gradle 8, so we need to wait a bit to see what the
future holds.

Left libraries as an alias for libs to reduce the commit size and make
it easier to revert if we don't end up liking this approach.

We're using Gradle 7.3.3 where it was an incubating fetaure. But in
Gradle 7.4 is became stable.
This commit is contained in:
Eric Anderson 2022-06-13 12:09:30 -07:00
parent 5b825e8b17
commit b06942d63b
30 changed files with 196 additions and 197 deletions

View File

@ -17,12 +17,12 @@ dependencies {
project(':grpc-grpclb'), project(':grpc-grpclb'),
project(':grpc-protobuf'), project(':grpc-protobuf'),
project(':grpc-stub'), project(':grpc-stub'),
libraries.protobuf, libraries.protobuf.java,
libraries.conscrypt, libraries.conscrypt,
libraries.guava, libraries.guava,
libraries.google_auth_oauth2_http libraries.google.auth.oauth2Http
def nettyDependency = implementation project(':grpc-netty') def nettyDependency = implementation project(':grpc-netty')
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
shadow configurations.implementation.getDependencies().minus(nettyDependency) shadow configurations.implementation.getDependencies().minus(nettyDependency)
shadow project(path: ':grpc-netty-shaded', configuration: 'shadow') shadow project(path: ':grpc-netty-shaded', configuration: 'shadow')
@ -32,14 +32,14 @@ dependencies {
project(':grpc-testing-proto'), project(':grpc-testing-proto'),
libraries.guava, libraries.guava,
libraries.junit, libraries.junit,
libraries.mockito, libraries.mockito.core,
libraries.truth libraries.truth
testImplementation (libraries.guava_testlib) { testImplementation (libraries.guava.testlib) {
exclude group: 'junit', module: 'junit' exclude group: 'junit', module: 'junit'
} }
testRuntimeOnly libraries.netty_tcnative testRuntimeOnly libraries.netty.tcnative
testRuntimeOnly (libraries.netty_epoll) { testRuntimeOnly (libraries.netty.transport.epoll) {
artifact { artifact {
classifier = "linux-x86_64" classifier = "linux-x86_64"
} }

View File

@ -56,7 +56,7 @@ android {
dependencies { dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0' implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.multidex:multidex:2.0.0' implementation 'androidx.multidex:multidex:2.0.0'
implementation libraries.androidx_annotation implementation libraries.androidx.annotation
implementation 'com.google.android.gms:play-services-base:18.0.1' implementation 'com.google.android.gms:play-services-base:18.0.1'
implementation project(':grpc-auth'), implementation project(':grpc-auth'),
@ -68,9 +68,9 @@ dependencies {
libraries.hdrhistogram, libraries.hdrhistogram,
libraries.junit, libraries.junit,
libraries.truth, libraries.truth,
libraries.opencensus_contrib_grpc_metrics libraries.opencensus.contrib.grpc.metrics
implementation (libraries.google_auth_oauth2_http) { implementation (libraries.google.auth.oauth2Http) {
exclude group: 'org.apache.httpcomponents' exclude group: 'org.apache.httpcomponents'
} }
@ -78,7 +78,7 @@ dependencies {
exclude group: 'com.google.protobuf' exclude group: 'com.google.protobuf'
} }
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
androidTestImplementation 'androidx.test.ext:junit:1.1.3', androidTestImplementation 'androidx.test.ext:junit:1.1.3',
'androidx.test:runner:1.4.0' 'androidx.test:runner:1.4.0'

View File

@ -33,7 +33,7 @@ dependencies {
api project(':grpc-core') api project(':grpc-core')
implementation libraries.guava implementation libraries.guava
testImplementation project('::grpc-okhttp') testImplementation project('::grpc-okhttp')
testImplementation libraries.androidx_test testImplementation libraries.androidx.test.core
testImplementation libraries.junit testImplementation libraries.junit
testImplementation (libraries.robolectric) { testImplementation (libraries.robolectric) {
// Unreleased change: https://github.com/robolectric/robolectric/pull/5432 // Unreleased change: https://github.com/robolectric/robolectric/pull/5432

View File

@ -13,13 +13,13 @@ evaluationDependsOn(project(':grpc-context').path)
dependencies { dependencies {
api project(':grpc-context'), api project(':grpc-context'),
libraries.jsr305, libraries.jsr305,
libraries.errorprone libraries.errorprone.annotations
implementation libraries.guava implementation libraries.guava
testImplementation project(':grpc-context').sourceSets.test.output, testImplementation project(':grpc-context').sourceSets.test.output,
project(':grpc-testing'), project(':grpc-testing'),
project(':grpc-grpclb') project(':grpc-grpclb')
testImplementation (libraries.guava_testlib) { testImplementation (libraries.guava.testlib) {
exclude group: 'junit', module: 'junit' exclude group: 'junit', module: 'junit'
} }
jmh project(':grpc-core') jmh project(':grpc-core')

View File

@ -9,10 +9,10 @@ plugins {
description = "gRPC: Auth" description = "gRPC: Auth"
dependencies { dependencies {
api project(':grpc-api'), api project(':grpc-api'),
libraries.google_auth_credentials libraries.google.auth.credentials
implementation libraries.guava implementation libraries.guava
testImplementation project(':grpc-testing'), testImplementation project(':grpc-testing'),
libraries.google_auth_oauth2_http libraries.google.auth.oauth2Http
signature "org.codehaus.mojo.signature:java17:1.0@signature" signature "org.codehaus.mojo.signature:java17:1.0@signature"
signature "net.sf.androidscents.signature:android-api-level-14:4.0_r4@signature" signature "net.sf.androidscents.signature:android-api-level-14:4.0_r4@signature"
} }

View File

@ -13,12 +13,12 @@ dependencies {
implementation project(':grpc-protobuf'), implementation project(':grpc-protobuf'),
project(':grpc-core') project(':grpc-core')
annotationProcessor libraries.autovalue annotationProcessor libraries.auto.value
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
testImplementation project(':grpc-testing'), testImplementation project(':grpc-testing'),
project(':grpc-testing-proto') project(':grpc-testing-proto')
testImplementation (libraries.guava_testlib) { testImplementation (libraries.guava.testlib) {
exclude group: 'junit', module: 'junit' exclude group: 'junit', module: 'junit'
} }

View File

@ -29,18 +29,18 @@ dependencies {
project(':grpc-testing'), project(':grpc-testing'),
project(path: ':grpc-xds', configuration: 'shadow'), project(path: ':grpc-xds', configuration: 'shadow'),
libraries.hdrhistogram, libraries.hdrhistogram,
libraries.netty_tcnative, libraries.netty.tcnative,
libraries.math libraries.commons.math3
implementation (libraries.netty_epoll) { implementation (libraries.netty.transport.epoll) {
artifact { artifact {
classifier = "linux-x86_64" classifier = "linux-x86_64"
} }
} }
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
alpnagent libraries.jetty_alpn_agent alpnagent libraries.jetty.alpn.agent
testImplementation libraries.junit, testImplementation libraries.junit,
libraries.mockito libraries.mockito.core
} }
import net.ltgt.gradle.errorprone.CheckSeverity import net.ltgt.gradle.errorprone.CheckSeverity

View File

@ -47,38 +47,38 @@ repositories {
dependencies { dependencies {
api project(':grpc-core') api project(':grpc-core')
implementation libraries.androidx_annotation implementation libraries.androidx.annotation
implementation libraries.androidx_core implementation libraries.androidx.core
implementation libraries.androidx_lifecycle_common implementation libraries.androidx.lifecycle.common
implementation libraries.guava implementation libraries.guava
testImplementation libraries.androidx_core testImplementation libraries.androidx.core
testImplementation libraries.androidx_test testImplementation libraries.androidx.test.core
testImplementation libraries.androidx_lifecycle_common testImplementation libraries.androidx.lifecycle.common
testImplementation libraries.androidx_lifecycle_service testImplementation libraries.androidx.lifecycle.service
testImplementation libraries.junit testImplementation libraries.junit
testImplementation libraries.mockito testImplementation libraries.mockito.core
testImplementation (libraries.robolectric) { testImplementation (libraries.robolectric) {
// Unreleased change: https://github.com/robolectric/robolectric/pull/5432 // Unreleased change: https://github.com/robolectric/robolectric/pull/5432
exclude group: 'com.google.auto.service', module: 'auto-service' exclude group: 'com.google.auto.service', module: 'auto-service'
} }
testImplementation (libraries.guava_testlib) { testImplementation (libraries.guava.testlib) {
exclude group: 'junit', module: 'junit' exclude group: 'junit', module: 'junit'
} }
testImplementation libraries.truth testImplementation libraries.truth
androidTestAnnotationProcessor libraries.autovalue androidTestAnnotationProcessor libraries.auto.value
androidTestImplementation project(':grpc-testing') androidTestImplementation project(':grpc-testing')
androidTestImplementation project(':grpc-protobuf-lite') androidTestImplementation project(':grpc-protobuf-lite')
androidTestImplementation libraries.autovalue_annotation androidTestImplementation libraries.auto.value.annotations
androidTestImplementation libraries.junit androidTestImplementation libraries.junit
androidTestImplementation libraries.androidx_core androidTestImplementation libraries.androidx.core
androidTestImplementation libraries.androidx_test androidTestImplementation libraries.androidx.test.core
androidTestImplementation libraries.androidx_test_rules androidTestImplementation libraries.androidx.test.rules
androidTestImplementation libraries.androidx_test_ext_junit androidTestImplementation libraries.androidx.test.ext.junit
androidTestImplementation libraries.truth androidTestImplementation libraries.truth
androidTestImplementation libraries.mockito_android androidTestImplementation libraries.mockito.android
androidTestImplementation libraries.androidx_lifecycle_service androidTestImplementation libraries.androidx.lifecycle.service
androidTestImplementation (libraries.guava_testlib) { androidTestImplementation (libraries.guava.testlib) {
exclude group: 'junit', module: 'junit' exclude group: 'junit', module: 'junit'
} }
} }

View File

@ -55,14 +55,6 @@ subprojects {
protocPluginBaseName = 'protoc-gen-grpc-java' protocPluginBaseName = 'protoc-gen-grpc-java'
javaPluginPath = "$rootDir/compiler/build/exe/java_plugin/$protocPluginBaseName$exeSuffix" javaPluginPath = "$rootDir/compiler/build/exe/java_plugin/$protocPluginBaseName$exeSuffix"
nettyVersion = '4.1.72.Final'
guavaVersion = '31.1-android'
googleauthVersion = '1.4.0'
protobufVersion = '3.19.2'
protocVersion = protobufVersion
opencensusVersion = '0.31.0'
autovalueVersion = '1.9'
configureProtoCompilation = { configureProtoCompilation = {
String generatedSourcePath = "${projectDir}/src/generated" String generatedSourcePath = "${projectDir}/src/generated"
project.protobuf { project.protobuf {
@ -70,7 +62,7 @@ subprojects {
if (project.hasProperty('protoc')) { if (project.hasProperty('protoc')) {
path = project.protoc path = project.protoc
} else { } else {
artifact = "com.google.protobuf:protoc:${protocVersion}" artifact = libs.protobuf.protoc.get()
} }
} }
generateProtoTasks { generateProtoTasks {
@ -146,70 +138,7 @@ subprojects {
} }
} }
libraries = [ libraries = libs
android_annotations: "com.google.android:annotations:4.1.1.4",
animalsniffer_annotations: "org.codehaus.mojo:animal-sniffer-annotations:1.19",
autovalue: "com.google.auto.value:auto-value:${autovalueVersion}",
autovalue_annotation: "com.google.auto.value:auto-value-annotations:${autovalueVersion}",
errorprone: "com.google.errorprone:error_prone_annotations:2.11.0",
cronet_api: 'org.chromium.net:cronet-api:92.4515.131',
cronet_embedded: 'org.chromium.net:cronet-embedded:92.4515.131',
gson: "com.google.code.gson:gson:2.9.0",
guava: "com.google.guava:guava:${guavaVersion}",
javax_annotation: 'org.apache.tomcat:annotations-api:6.0.53',
jsr305: 'com.google.code.findbugs:jsr305:3.0.2',
google_api_protos: 'com.google.api.grpc:proto-google-common-protos:2.0.1',
google_auth_credentials: "com.google.auth:google-auth-library-credentials:${googleauthVersion}",
google_auth_oauth2_http: "com.google.auth:google-auth-library-oauth2-http:${googleauthVersion}",
okhttp: 'com.squareup.okhttp:okhttp:2.7.4',
okio: 'com.squareup.okio:okio:1.17.5',
opencensus_api: "io.opencensus:opencensus-api:${opencensusVersion}",
opencensus_contrib_grpc_metrics: "io.opencensus:opencensus-contrib-grpc-metrics:${opencensusVersion}",
opencensus_impl: "io.opencensus:opencensus-impl:${opencensusVersion}",
opencensus_impl_lite: "io.opencensus:opencensus-impl-lite:${opencensusVersion}",
opencensus_proto: "io.opencensus:opencensus-proto:0.2.0",
instrumentation_api: 'com.google.instrumentation:instrumentation-api:0.4.3',
perfmark: 'io.perfmark:perfmark-api:0.25.0',
protobuf: "com.google.protobuf:protobuf-java:${protobufVersion}",
protobuf_lite: "com.google.protobuf:protobuf-javalite:${protobufVersion}",
protobuf_util: "com.google.protobuf:protobuf-java-util:${protobufVersion}",
netty: "io.netty:netty-codec-http2:[${nettyVersion}]",
netty_epoll: "io.netty:netty-transport-native-epoll:${nettyVersion}",
netty_unix_common: "io.netty:netty-transport-native-unix-common:${nettyVersion}",
netty_proxy_handler: "io.netty:netty-handler-proxy:${nettyVersion}",
// Keep the following references of tcnative version in sync whenever it's updated
// SECURITY.md (multiple occurrences)
// examples/example-tls/build.gradle
// examples/example-tls/pom.xml
netty_tcnative: 'io.netty:netty-tcnative-boringssl-static:2.0.46.Final',
conscrypt: 'org.conscrypt:conscrypt-openjdk-uber:2.5.1',
re2j: 'com.google.re2j:re2j:1.5',
// Test dependencies.
junit: 'junit:junit:4.12',
mockito: 'org.mockito:mockito-core:3.3.3',
mockito_android: 'org.mockito:mockito-android:3.8.0',
truth: 'com.google.truth:truth:1.0.1',
guava_testlib: "com.google.guava:guava-testlib:${guavaVersion}",
androidx_annotation: "androidx.annotation:annotation:1.1.0",
androidx_core: "androidx.core:core:1.3.0",
androidx_lifecycle_common: "androidx.lifecycle:lifecycle-common:2.3.0",
androidx_lifecycle_service: "androidx.lifecycle:lifecycle-service:2.3.0",
androidx_test: "androidx.test:core:1.3.0",
androidx_test_rules: "androidx.test:rules:1.3.0",
androidx_test_ext_junit: "androidx.test.ext:junit:1.1.2",
robolectric: "org.robolectric:robolectric:4.4",
// Benchmark dependencies
hdrhistogram: 'org.hdrhistogram:HdrHistogram:2.1.12',
math: 'org.apache.commons:commons-math3:3.6.1',
// Jetty ALPN dependencies
jetty_alpn_agent: 'org.mortbay.jetty.alpn:jetty-alpn-agent:2.0.10'
]
appendToProperty = { Property<String> property, String value, String separator -> appendToProperty = { Property<String> property, String value, String separator ->
if (property.present) { if (property.present) {
@ -231,7 +160,7 @@ subprojects {
checkstyle { checkstyle {
configDirectory = file("$rootDir/buildscripts") configDirectory = file("$rootDir/buildscripts")
toolVersion = "6.17" toolVersion = libs.versions.checkstyle.get()
ignoreFailures = false ignoreFailures = false
if (rootProject.hasProperty("checkstyle.ignoreFailures")) { if (rootProject.hasProperty("checkstyle.ignoreFailures")) {
ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean() ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean()
@ -240,8 +169,8 @@ subprojects {
if (!project.hasProperty('errorProne') || errorProne.toBoolean()) { if (!project.hasProperty('errorProne') || errorProne.toBoolean()) {
dependencies { dependencies {
errorprone 'com.google.errorprone:error_prone_core:2.10.0' errorprone libs.errorprone.core
errorproneJavac 'com.google.errorprone:javac:9+181-r4173-1' errorproneJavac libs.errorprone.javac
} }
} else { } else {
// Disable Error Prone // Disable Error Prone
@ -256,7 +185,7 @@ subprojects {
dependencies { dependencies {
testImplementation libraries.junit, testImplementation libraries.junit,
libraries.mockito, libraries.mockito.core,
libraries.truth libraries.truth
} }
@ -301,7 +230,7 @@ subprojects {
if (!project.hasProperty('errorProne') || errorProne.toBoolean()) { if (!project.hasProperty('errorProne') || errorProne.toBoolean()) {
dependencies { dependencies {
annotationProcessor 'com.google.guava:guava-beta-checker:1.0' annotationProcessor libs.guava.betaChecker
} }
} }
@ -325,8 +254,7 @@ subprojects {
plugins.withId("ru.vyarus.animalsniffer") { plugins.withId("ru.vyarus.animalsniffer") {
// Only available after java plugin has loaded // Only available after java plugin has loaded
animalsniffer { animalsniffer {
// Breaks on upgrade: https://github.com/mojohaus/animal-sniffer/issues/131 toolVersion = libs.versions.animalsniffer.get()
toolVersion = '1.18'
} }
} }
} }

View File

@ -10,14 +10,14 @@ evaluationDependsOn(project(':grpc-api').path)
dependencies { dependencies {
api project(':grpc-api') api project(':grpc-api')
implementation libraries.guava, implementation libraries.guava,
libraries.opencensus_api, libraries.opencensus.api,
libraries.opencensus_contrib_grpc_metrics libraries.opencensus.contrib.grpc.metrics
testImplementation project(':grpc-api').sourceSets.test.output, testImplementation project(':grpc-api').sourceSets.test.output,
project(':grpc-context').sourceSets.test.output, project(':grpc-context').sourceSets.test.output,
project(':grpc-core').sourceSets.test.output, project(':grpc-core').sourceSets.test.output,
project(':grpc-testing'), project(':grpc-testing'),
libraries.opencensus_impl libraries.opencensus.impl
} }
javadoc { javadoc {

View File

@ -134,10 +134,10 @@ configurations {
dependencies { dependencies {
testImplementation project(':grpc-protobuf'), testImplementation project(':grpc-protobuf'),
project(':grpc-stub'), project(':grpc-stub'),
libraries.javax_annotation libraries.javax.annotation
testLiteImplementation project(':grpc-protobuf-lite'), testLiteImplementation project(':grpc-protobuf-lite'),
project(':grpc-stub'), project(':grpc-stub'),
libraries.javax_annotation libraries.javax.annotation
} }
sourceSets { sourceSets {
@ -163,7 +163,7 @@ protobuf {
if (project.hasProperty('protoc')) { if (project.hasProperty('protoc')) {
path = project.protoc path = project.protoc
} else { } else {
artifact = "com.google.protobuf:protoc:${protocVersion}" artifact = libs.protobuf.protoc.get()
} }
} }
plugins { plugins {
@ -186,7 +186,7 @@ protobuf {
} }
} }
println "*** Building codegen requires Protobuf version ${protocVersion}" println "*** Building codegen requires Protobuf version ${libs.versions.protobuf.get()}"
println "*** Please refer to https://github.com/grpc/grpc-java/blob/master/COMPILING.md#how-to-build-code-generation-plugin" println "*** Please refer to https://github.com/grpc/grpc-java/blob/master/COMPILING.md#how-to-build-code-generation-plugin"
task buildArtifacts(type: Copy) { task buildArtifacts(type: Copy) {

View File

@ -25,16 +25,16 @@ evaluationDependsOn(project(':grpc-api').path)
dependencies { dependencies {
api project(':grpc-api') api project(':grpc-api')
implementation libraries.gson, implementation libraries.gson,
libraries.android_annotations, libraries.android.annotations,
libraries.animalsniffer_annotations, libraries.animalsniffer.annotations,
libraries.errorprone, libraries.errorprone.annotations,
libraries.guava, libraries.guava,
libraries.perfmark libraries.perfmark.api
testImplementation project(':grpc-context').sourceSets.test.output, testImplementation project(':grpc-context').sourceSets.test.output,
project(':grpc-api').sourceSets.test.output, project(':grpc-api').sourceSets.test.output,
project(':grpc-testing'), project(':grpc-testing'),
project(':grpc-grpclb') project(':grpc-grpclb')
testImplementation (libraries.guava_testlib) { testImplementation (libraries.guava.testlib) {
exclude group: 'junit', module: 'junit' exclude group: 'junit', module: 'junit'
} }

View File

@ -38,14 +38,14 @@ android {
dependencies { dependencies {
api project(':grpc-core'), api project(':grpc-core'),
libraries.cronet_api libraries.cronet.api
implementation libraries.guava implementation libraries.guava
testImplementation project(':grpc-testing') testImplementation project(':grpc-testing')
testImplementation libraries.cronet_embedded testImplementation libraries.cronet.embedded
testImplementation libraries.junit testImplementation libraries.junit
testImplementation libraries.mockito testImplementation libraries.mockito.core
testImplementation (libraries.robolectric) { testImplementation (libraries.robolectric) {
// Unreleased change: https://github.com/robolectric/robolectric/pull/5432 // Unreleased change: https://github.com/robolectric/robolectric/pull/5432
exclude group: 'com.google.auto.service', module: 'auto-service' exclude group: 'com.google.auto.service', module: 'auto-service'

View File

@ -51,8 +51,8 @@ dependencies {
exclude group: 'io.grpc', module: 'grpc-xds' exclude group: 'io.grpc', module: 'grpc-xds'
} }
implementation libraries.junit implementation libraries.junit
implementation libraries.protobuf implementation libraries.protobuf.java
runtimeOnly libraries.netty_tcnative runtimeOnly libraries.netty.tcnative
} }
compileJava { compileJava {

View File

@ -23,17 +23,17 @@ dependencies {
def cloudLoggingVersion = '3.6.1' def cloudLoggingVersion = '3.6.1'
def opencensusExporterVersion = '0.31.0' def opencensusExporterVersion = '0.31.0'
annotationProcessor libraries.autovalue annotationProcessor libraries.auto.value
api project(':grpc-api') api project(':grpc-api')
implementation project(':grpc-protobuf'), implementation project(':grpc-protobuf'),
project(':grpc-stub'), project(':grpc-stub'),
project(':grpc-alts'), project(':grpc-alts'),
project(':grpc-census'), project(':grpc-census'),
libraries.google_auth_oauth2_http, libraries.google.auth.oauth2Http,
libraries.autovalue_annotation, libraries.auto.value.annotations,
libraries.perfmark, libraries.perfmark.api,
libraries.opencensus_contrib_grpc_metrics, libraries.opencensus.contrib.grpc.metrics,
libraries.gson, libraries.gson,
('com.google.guava:guava:31.1-jre'), ('com.google.guava:guava:31.1-jre'),
('com.google.auth:google-auth-library-credentials:1.4.0'), ('com.google.auth:google-auth-library-credentials:1.4.0'),
@ -46,12 +46,12 @@ dependencies {
("io.opencensus:opencensus-exporter-stats-stackdriver:${opencensusExporterVersion}"), ("io.opencensus:opencensus-exporter-stats-stackdriver:${opencensusExporterVersion}"),
("io.opencensus:opencensus-exporter-trace-stackdriver:${opencensusExporterVersion}") ("io.opencensus:opencensus-exporter-trace-stackdriver:${opencensusExporterVersion}")
runtimeOnly libraries.opencensus_impl runtimeOnly libraries.opencensus.impl
testImplementation project(':grpc-testing'), testImplementation project(':grpc-testing'),
project(':grpc-testing-proto'), project(':grpc-testing-proto'),
project(':grpc-netty-shaded') project(':grpc-netty-shaded')
testImplementation (libraries.guava_testlib) { testImplementation (libraries.guava.testlib) {
exclude group: 'junit', module: 'junit' exclude group: 'junit', module: 'junit'
} }

69
gradle/libs.versions.toml Normal file
View File

@ -0,0 +1,69 @@
[versions]
# Breaks on upgrade: https://github.com/mojohaus/animal-sniffer/issues/131
animalsniffer = "1.18"
autovalue = "1.9"
checkstyle = "6.17"
googleauth = "1.4.0"
guava = "31.1-android"
netty = "4.1.72.Final"
opencensus = "0.31.0"
protobuf = "3.19.2"
[libraries]
android-annotations = "com.google.android:annotations:4.1.1.4"
androidx-annotation = "androidx.annotation:annotation:1.1.0"
androidx-core = "androidx.core:core:1.3.0"
androidx-lifecycle-common = "androidx.lifecycle:lifecycle-common:2.3.0"
androidx-lifecycle-service = "androidx.lifecycle:lifecycle-service:2.3.0"
androidx-test-core = "androidx.test:core:1.3.0"
androidx-test-ext-junit = "androidx.test.ext:junit:1.1.2"
androidx-test-rules = "androidx.test:rules:1.3.0"
animalsniffer-annotations = "org.codehaus.mojo:animal-sniffer-annotations:1.19"
auto-value = { module = "com.google.auto.value:auto-value", version.ref = "autovalue" }
auto-value-annotations = { module = "com.google.auto.value:auto-value-annotations", version.ref = "autovalue" }
commons-math3 = "org.apache.commons:commons-math3:3.6.1"
conscrypt = "org.conscrypt:conscrypt-openjdk-uber:2.5.1"
cronet-api = "org.chromium.net:cronet-api:92.4515.131"
cronet-embedded = "org.chromium.net:cronet-embedded:92.4515.131"
errorprone-annotations = "com.google.errorprone:error_prone_annotations:2.11.0"
errorprone-core = "com.google.errorprone:error_prone_core:2.10.0"
errorprone-javac = "com.google.errorprone:javac:9+181-r4173-1"
google-api-protos = "com.google.api.grpc:proto-google-common-protos:2.0.1"
google-auth-credentials = { module = "com.google.auth:google-auth-library-credentials", version.ref = "googleauth" }
google-auth-oauth2Http = { module = "com.google.auth:google-auth-library-oauth2-http", version.ref = "googleauth" }
gson = "com.google.code.gson:gson:2.9.0"
guava = { module = "com.google.guava:guava", version.ref = "guava" }
guava-betaChecker = "com.google.guava:guava-beta-checker:1.0"
guava-testlib = { module = "com.google.guava:guava-testlib", version.ref = "guava" }
hdrhistogram = "org.hdrhistogram:HdrHistogram:2.1.12"
instrumentation-api = "com.google.instrumentation:instrumentation-api:0.4.3"
javax-annotation = "org.apache.tomcat:annotations-api:6.0.53"
jetty-alpn-agent = "org.mortbay.jetty.alpn:jetty-alpn-agent:2.0.10"
jsr305 = "com.google.code.findbugs:jsr305:3.0.2"
junit = "junit:junit:4.12"
mockito-android = "org.mockito:mockito-android:3.8.0"
mockito-core = "org.mockito:mockito-core:3.3.3"
netty-codec-http2 = { module = "io.netty:netty-codec-http2", version.ref = "netty" }
netty-handler-proxy = { module = "io.netty:netty-handler-proxy", version.ref = "netty" }
netty-transport-epoll = { module = "io.netty:netty-transport-native-epoll", version.ref = "netty" }
# Keep the following references of tcnative version in sync whenever it's updated:
# SECURITY.md (multiple occurrences)
# examples/example-tls/build.gradle
# examples/example-tls/pom.xml
netty-tcnative = "io.netty:netty-tcnative-boringssl-static:2.0.46.Final"
netty-unix-common = { module = "io.netty:netty-transport-native-unix-common", version.ref = "netty" }
okhttp = "com.squareup.okhttp:okhttp:2.7.4"
okio = "com.squareup.okio:okio:1.17.5"
opencensus-api = { module = "io.opencensus:opencensus-api", version.ref = "opencensus" }
opencensus-contrib-grpc-metrics = { module = "io.opencensus:opencensus-contrib-grpc-metrics", version.ref = "opencensus" }
opencensus-impl = { module = "io.opencensus:opencensus-impl", version.ref = "opencensus" }
opencensus-impl-lite = { module = "io.opencensus:opencensus-impl-lite", version.ref = "opencensus" }
opencensus-proto = "io.opencensus:opencensus-proto:0.2.0"
perfmark-api = "io.perfmark:perfmark-api:0.25.0"
protobuf-java = { module = "com.google.protobuf:protobuf-java", version.ref = "protobuf" }
protobuf-java-util = { module = "com.google.protobuf:protobuf-java-util", version.ref = "protobuf" }
protobuf-javalite = { module = "com.google.protobuf:protobuf-javalite", version.ref = "protobuf" }
protobuf-protoc = { module = "com.google.protobuf:protoc", version.ref = "protobuf" }
re2j = "com.google.re2j:re2j:1.5"
robolectric = "org.robolectric:robolectric:4.4"
truth = "com.google.truth:truth:1.0.1"

View File

@ -14,11 +14,11 @@ dependencies {
implementation project(':grpc-core'), implementation project(':grpc-core'),
project(':grpc-protobuf'), project(':grpc-protobuf'),
project(':grpc-stub'), project(':grpc-stub'),
libraries.protobuf, libraries.protobuf.java,
libraries.protobuf_util, libraries.protobuf.java.util,
libraries.guava libraries.guava
runtimeOnly libraries.errorprone runtimeOnly libraries.errorprone.annotations
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
testImplementation libraries.truth, testImplementation libraries.truth,
project(':grpc-core').sourceSets.test.output project(':grpc-core').sourceSets.test.output
} }

View File

@ -32,11 +32,11 @@ dependencies {
libraries.hdrhistogram, libraries.hdrhistogram,
libraries.junit, libraries.junit,
libraries.truth, libraries.truth,
libraries.opencensus_contrib_grpc_metrics, libraries.opencensus.contrib.grpc.metrics,
libraries.google_auth_oauth2_http libraries.google.auth.oauth2Http
def xdsDependency = implementation project(':grpc-xds') def xdsDependency = implementation project(':grpc-xds')
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
shadow configurations.implementation.getDependencies().minus(xdsDependency) shadow configurations.implementation.getDependencies().minus(xdsDependency)
shadow project(path: ':grpc-xds', configuration: 'shadow') shadow project(path: ':grpc-xds', configuration: 'shadow')
// TODO(sergiitk): replace with com.google.cloud:google-cloud-logging // TODO(sergiitk): replace with com.google.cloud:google-cloud-logging
@ -46,16 +46,16 @@ dependencies {
// Error example: "java.util.logging.ErrorManager: 1" // Error example: "java.util.logging.ErrorManager: 1"
// Latest failing version com.google.cloud:google-cloud-logging:2.1.2 // Latest failing version com.google.cloud:google-cloud-logging:2.1.2
runtimeOnly group: 'io.github.devatherock', name: 'jul-jsonformatter', version: '1.1.0' runtimeOnly group: 'io.github.devatherock', name: 'jul-jsonformatter', version: '1.1.0'
runtimeOnly libraries.opencensus_impl, runtimeOnly libraries.opencensus.impl,
libraries.netty_tcnative, libraries.netty.tcnative,
project(':grpc-grpclb'), project(':grpc-grpclb'),
project(':grpc-rls') project(':grpc-rls')
testImplementation project(':grpc-context').sourceSets.test.output, testImplementation project(':grpc-context').sourceSets.test.output,
project(':grpc-api').sourceSets.test.output, project(':grpc-api').sourceSets.test.output,
project(':grpc-core').sourceSets.test.output, project(':grpc-core').sourceSets.test.output,
libraries.mockito, libraries.mockito.core,
libraries.okhttp libraries.okhttp
alpnagent libraries.jetty_alpn_agent alpnagent libraries.jetty.alpn.agent
} }
configureProtoCompilation() configureProtoCompilation()

View File

@ -17,28 +17,28 @@ evaluationDependsOn(project(':grpc-core').path)
dependencies { dependencies {
api project(':grpc-core'), api project(':grpc-core'),
libraries.netty libraries.netty.codec.http2
implementation libraries.netty_proxy_handler, implementation libs.netty.handler.proxy,
libraries.guava, libraries.guava,
libraries.errorprone, libraries.errorprone.annotations,
libraries.perfmark, libraries.perfmark.api,
libraries.netty_unix_common libraries.netty.unix.common
// Tests depend on base class defined by core module. // Tests depend on base class defined by core module.
testImplementation project(':grpc-core').sourceSets.test.output, testImplementation project(':grpc-core').sourceSets.test.output,
project(':grpc-api').sourceSets.test.output, project(':grpc-api').sourceSets.test.output,
project(':grpc-testing'), project(':grpc-testing'),
project(':grpc-testing-proto'), project(':grpc-testing-proto'),
libraries.netty_epoll libraries.netty.transport.epoll
testRuntimeOnly libraries.netty_tcnative, testRuntimeOnly libraries.netty.tcnative,
libraries.conscrypt libraries.conscrypt
testRuntimeOnly (libraries.netty_epoll) { testRuntimeOnly (libraries.netty.transport.epoll) {
artifact { artifact {
classifier = "linux-x86_64" classifier = "linux-x86_64"
} }
} }
signature "org.codehaus.mojo.signature:java17:1.0@signature" signature "org.codehaus.mojo.signature:java17:1.0@signature"
alpnagent libraries.jetty_alpn_agent alpnagent libraries.jetty.alpn.agent
} }
import net.ltgt.gradle.errorprone.CheckSeverity import net.ltgt.gradle.errorprone.CheckSeverity

View File

@ -17,13 +17,13 @@ sourceSets { testShadow {} }
dependencies { dependencies {
implementation project(':grpc-netty') implementation project(':grpc-netty')
runtimeOnly libraries.netty_tcnative runtimeOnly libraries.netty.tcnative
runtimeOnly (libraries.netty_epoll) { runtimeOnly (libraries.netty.transport.epoll) {
artifact { artifact {
classifier = "linux-x86_64" classifier = "linux-x86_64"
} }
} }
runtimeOnly (libraries.netty_epoll) { runtimeOnly (libraries.netty.transport.epoll) {
artifact { artifact {
classifier = "linux-aarch_64" classifier = "linux-aarch_64"
} }

View File

@ -14,7 +14,7 @@ dependencies {
api project(':grpc-core') api project(':grpc-core')
implementation libraries.okio, implementation libraries.okio,
libraries.guava, libraries.guava,
libraries.perfmark libraries.perfmark.api
// Make okhttp dependencies compile only // Make okhttp dependencies compile only
compileOnly libraries.okhttp compileOnly libraries.okhttp
// Tests depend on base class defined by core module. // Tests depend on base class defined by core module.

View File

@ -11,7 +11,7 @@ description = 'gRPC: Protobuf Lite'
dependencies { dependencies {
api project(':grpc-api'), api project(':grpc-api'),
libraries.protobuf_lite libraries.protobuf.javalite
implementation libraries.jsr305, implementation libraries.jsr305,
libraries.guava libraries.guava
@ -33,7 +33,7 @@ protobuf {
if (project.hasProperty('protoc')) { if (project.hasProperty('protoc')) {
path = project.protoc path = project.protoc
} else { } else {
artifact = "com.google.protobuf:protoc:${protocVersion}" artifact = libs.protobuf.protoc.get()
} }
} }
generateProtoTasks { generateProtoTasks {

View File

@ -12,10 +12,10 @@ description = 'gRPC: Protobuf'
dependencies { dependencies {
api project(':grpc-api'), api project(':grpc-api'),
libraries.jsr305, libraries.jsr305,
libraries.protobuf libraries.protobuf.java
implementation libraries.guava implementation libraries.guava
api (libraries.google_api_protos) { api (libraries.google.api.protos) {
// 'com.google.api:api-common' transitively depends on auto-value, which breaks our // 'com.google.api:api-common' transitively depends on auto-value, which breaks our
// annotations. // annotations.
exclude group: 'com.google.api', module: 'api-common' exclude group: 'com.google.api', module: 'api-common'

View File

@ -14,10 +14,10 @@ dependencies {
implementation project(':grpc-core'), implementation project(':grpc-core'),
project(':grpc-protobuf'), project(':grpc-protobuf'),
project(':grpc-stub'), project(':grpc-stub'),
libraries.autovalue_annotation, libraries.auto.value.annotations,
libraries.guava libraries.guava
annotationProcessor libraries.autovalue annotationProcessor libraries.auto.value
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
testImplementation libraries.truth, testImplementation libraries.truth,
project(':grpc-grpclb'), project(':grpc-grpclb'),
project(':grpc-testing'), project(':grpc-testing'),

View File

@ -22,16 +22,16 @@ dependencies {
api project(':grpc-protobuf'), api project(':grpc-protobuf'),
project(':grpc-stub'), project(':grpc-stub'),
project(':grpc-core') project(':grpc-core')
implementation libraries.protobuf_util, implementation libraries.protobuf.java.util,
libraries.guava libraries.guava
runtimeOnly libraries.errorprone runtimeOnly libraries.errorprone.annotations
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
testImplementation project(':grpc-testing'), testImplementation project(':grpc-testing'),
libraries.netty_epoll, // for DomainSocketAddress libraries.netty.transport.epoll, // for DomainSocketAddress
project(':grpc-core').sourceSets.test.output // for FakeClock project(':grpc-core').sourceSets.test.output // for FakeClock
testCompileOnly libraries.javax_annotation testCompileOnly libraries.javax.annotation
signature "org.codehaus.mojo.signature:java17:1.0@signature" signature "org.codehaus.mojo.signature:java17:1.0@signature"
} }

View File

@ -25,6 +25,8 @@ pluginManagement {
} }
} }
enableFeaturePreview('VERSION_CATALOGS')
rootProject.name = "grpc" rootProject.name = "grpc"
include ":grpc-api" include ":grpc-api"
include ":grpc-core" include ":grpc-core"

View File

@ -10,7 +10,7 @@ description = "gRPC: Stub"
dependencies { dependencies {
api project(':grpc-api'), api project(':grpc-api'),
libraries.guava libraries.guava
implementation libraries.errorprone implementation libraries.errorprone.annotations
testImplementation libraries.truth, testImplementation libraries.truth,
project(':grpc-testing') project(':grpc-testing')
signature "org.codehaus.mojo.signature:java17:1.0@signature" signature "org.codehaus.mojo.signature:java17:1.0@signature"

View File

@ -10,9 +10,9 @@ description = "gRPC: Testing Protos"
dependencies { dependencies {
api project(':grpc-protobuf'), api project(':grpc-protobuf'),
project(':grpc-stub') project(':grpc-stub')
compileOnly libraries.javax_annotation compileOnly libraries.javax.annotation
testImplementation libraries.truth testImplementation libraries.truth
testRuntimeOnly libraries.javax_annotation testRuntimeOnly libraries.javax.annotation
} }
configureProtoCompilation() configureProtoCompilation()

View File

@ -14,10 +14,10 @@ dependencies {
project(':grpc-stub'), project(':grpc-stub'),
libraries.junit libraries.junit
// Only io.grpc.internal.testing.StatsTestUtils depends on opencensus_api, for internal use. // Only io.grpc.internal.testing.StatsTestUtils depends on opencensus_api, for internal use.
compileOnly libraries.opencensus_api compileOnly libraries.opencensus.api
runtimeOnly project(":grpc-context") // Pull in newer version than census-api runtimeOnly project(":grpc-context") // Pull in newer version than census-api
testImplementation (libraries.mockito) { testImplementation (libraries.mockito.core) {
// prefer our own versions instead of mockito's dependency // prefer our own versions instead of mockito's dependency
exclude group: 'org.hamcrest', module: 'hamcrest-core' exclude group: 'org.hamcrest', module: 'hamcrest-core'
} }

View File

@ -35,27 +35,27 @@ dependencies {
project(path: ':grpc-alts', configuration: 'shadow'), project(path: ':grpc-alts', configuration: 'shadow'),
libraries.gson, libraries.gson,
libraries.re2j, libraries.re2j,
libraries.autovalue_annotation, libraries.auto.value.annotations,
libraries.opencensus_proto, libraries.opencensus.proto,
libraries.protobuf_util libraries.protobuf.java.util
def nettyDependency = implementation project(':grpc-netty') def nettyDependency = implementation project(':grpc-netty')
testImplementation project(':grpc-rls') testImplementation project(':grpc-rls')
testImplementation project(':grpc-core').sourceSets.test.output testImplementation project(':grpc-core').sourceSets.test.output
annotationProcessor libraries.autovalue annotationProcessor libraries.auto.value
compileOnly libraries.javax_annotation, compileOnly libraries.javax.annotation,
// At runtime use the epoll included in grpc-netty-shaded // At runtime use the epoll included in grpc-netty-shaded
libraries.netty_epoll libraries.netty.transport.epoll
testImplementation project(':grpc-testing'), testImplementation project(':grpc-testing'),
project(':grpc-testing-proto') project(':grpc-testing-proto')
testImplementation (libraries.netty_epoll) { testImplementation (libraries.netty.transport.epoll) {
artifact { artifact {
classifier = "linux-x86_64" classifier = "linux-x86_64"
} }
} }
testImplementation (libraries.guava_testlib) { testImplementation (libraries.guava.testlib) {
exclude group: 'junit', module: 'junit' exclude group: 'junit', module: 'junit'
} }
@ -63,7 +63,7 @@ dependencies {
shadow project(path: ':grpc-netty-shaded', configuration: 'shadow') shadow project(path: ':grpc-netty-shaded', configuration: 'shadow')
signature "org.codehaus.mojo.signature:java17:1.0@signature" signature "org.codehaus.mojo.signature:java17:1.0@signature"
testRuntimeOnly libraries.netty_tcnative testRuntimeOnly libraries.netty.tcnative
} }
sourceSets { sourceSets {