Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 1 | buildscript { |
| 2 | repositories { |
| 3 | mavenCentral() |
| 4 | mavenLocal() |
| 5 | maven { |
| 6 | url "https://plugins.gradle.org/m2/" |
| 7 | } |
| 8 | } |
| 9 | dependencies { |
Yang Song | b9facf9 | 2018-09-27 16:13:17 -0700 | [diff] [blame] | 10 | classpath 'ru.vyarus:gradle-animalsniffer-plugin:1.4.6' |
| 11 | classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.16' |
| 12 | classpath "net.ltgt.gradle:gradle-apt-plugin:0.18" |
| 13 | classpath 'com.github.ben-manes:gradle-versions-plugin:0.20.0' |
Bogdan Drutu | af3565c | 2018-07-19 13:47:30 -0400 | [diff] [blame] | 14 | classpath "gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.7.1" |
Bogdan Drutu | c0e0b22 | 2018-09-11 00:08:18 -0700 | [diff] [blame] | 15 | classpath "me.champeau.gradle:jmh-gradle-plugin:0.4.7" |
| 16 | classpath "gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.7.0" |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 17 | } |
| 18 | } |
| 19 | |
Stefan Schmidt | e220edb | 2017-08-18 20:49:18 +0200 | [diff] [blame] | 20 | // Display the version report using: ./gradlew dependencyUpdates |
| 21 | // Also see https://github.com/ben-manes/gradle-versions-plugin. |
| 22 | apply plugin: 'com.github.ben-manes.versions' |
| 23 | |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 24 | // Don't use the Checker Framework by default, since it interferes with Error Prone. |
| 25 | def useCheckerFramework = rootProject.hasProperty('checkerFramework') |
| 26 | def useErrorProne = !useCheckerFramework |
| 27 | |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 28 | subprojects { |
| 29 | apply plugin: "checkstyle" |
| 30 | apply plugin: 'maven' |
| 31 | apply plugin: 'idea' |
Fabian Lange | 5430ec7 | 2018-02-02 14:23:58 -0800 | [diff] [blame] | 32 | apply plugin: 'eclipse' |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 33 | apply plugin: 'java' |
| 34 | apply plugin: "signing" |
| 35 | apply plugin: "jacoco" |
Bogdan Drutu | b0e6050 | 2017-03-22 19:23:35 -0700 | [diff] [blame] | 36 | // The plugin only has an effect if a signature is specified |
| 37 | apply plugin: 'ru.vyarus.animalsniffer' |
Bogdan Drutu | 07f0dd2 | 2017-03-22 08:54:53 -0700 | [diff] [blame] | 38 | apply plugin: 'findbugs' |
Bogdan Drutu | 6cb4dd2 | 2017-11-03 09:25:12 +1100 | [diff] [blame] | 39 | apply plugin: 'net.ltgt.apt' |
Bogdan Drutu | c0e0b22 | 2018-09-11 00:08:18 -0700 | [diff] [blame] | 40 | apply plugin: "me.champeau.gradle.jmh" |
| 41 | apply plugin: "io.morethan.jmhreport" |
Bogdan Drutu | b0e6050 | 2017-03-22 19:23:35 -0700 | [diff] [blame] | 42 | // Plugins that require java8 |
| 43 | if (JavaVersion.current().isJava8Compatible()) { |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 44 | if (useErrorProne) { |
| 45 | apply plugin: "net.ltgt.errorprone" |
| 46 | } |
Bogdan Drutu | 6cb4dd2 | 2017-11-03 09:25:12 +1100 | [diff] [blame] | 47 | apply plugin: 'com.github.sherter.google-java-format' |
Bogdan Drutu | b0e6050 | 2017-03-22 19:23:35 -0700 | [diff] [blame] | 48 | } |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 49 | |
Bogdan Drutu | 1d2eda6 | 2017-06-19 23:54:11 -0700 | [diff] [blame] | 50 | group = "io.opencensus" |
sebright | 7b1665e | 2018-09-14 13:41:30 -0700 | [diff] [blame] | 51 | version = "0.17.0-SNAPSHOT" // CURRENT_OPENCENSUS_VERSION |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 52 | |
| 53 | sourceCompatibility = 1.6 |
| 54 | targetCompatibility = 1.6 |
| 55 | |
| 56 | repositories { |
| 57 | mavenCentral() |
| 58 | mavenLocal() |
| 59 | } |
| 60 | |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 61 | if (useCheckerFramework) { |
| 62 | configurations { |
| 63 | checkerFrameworkJavac { |
| 64 | description = 'a customization of the Open JDK javac compiler with additional support for type annotations' |
| 65 | } |
| 66 | checkerFrameworkAnnotatedJDK { |
| 67 | description = 'a copy of JDK classes with Checker Framework type qualifiers inserted' |
| 68 | } |
| 69 | } |
| 70 | } |
| 71 | |
Bogdan Drutu | c0e0b22 | 2018-09-11 00:08:18 -0700 | [diff] [blame] | 72 | [compileJava, compileTestJava, compileJmhJava].each() { |
Kristen Kozak | ebb2d1d | 2018-02-26 16:07:52 -0800 | [diff] [blame] | 73 | // We suppress the "try" warning because it disallows managing an auto-closeable with |
| 74 | // try-with-resources without referencing the auto-closeable within the try block. |
Kristen Kozak | 9cb2384 | 2017-03-21 17:51:20 -0700 | [diff] [blame] | 75 | // We suppress the "processing" warning as suggested in |
| 76 | // https://groups.google.com/forum/#!topic/bazel-discuss/_R3A9TJSoPM |
| 77 | it.options.compilerArgs += ["-Xlint:all", "-Xlint:-try", "-Xlint:-processing"] |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 78 | if (useErrorProne) { |
| 79 | if (JavaVersion.current().isJava8Compatible()) { |
Kristen Kozak | 372aa6d | 2018-06-13 16:28:51 -0700 | [diff] [blame] | 80 | it.options.compilerArgs += ["-XepAllDisabledChecksAsWarnings", "-XepDisableWarningsInGeneratedCode"] |
| 81 | |
| 82 | // MutableMethodReturnType can suggest returning Guava types from |
| 83 | // API methods (https://github.com/google/error-prone/issues/982). |
| 84 | it.options.compilerArgs += ["-Xep:MutableMethodReturnType:OFF"] |
| 85 | |
| 86 | // ReturnMissingNullable conflicts with Checker Framework null analysis. |
| 87 | it.options.compilerArgs += ["-Xep:ReturnMissingNullable:OFF"] |
| 88 | |
| 89 | // OpenCensus doesn't currently use Var annotations. |
| 90 | it.options.compilerArgs += ["-Xep:Var:OFF"] |
Bogdan Drutu | 14920b4 | 2017-03-23 17:13:53 -0700 | [diff] [blame] | 91 | } |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 92 | } |
| 93 | if (useCheckerFramework) { |
| 94 | it.options.compilerArgs += [ |
Kristen Kozak | 3c52606 | 2017-12-28 12:27:22 -0800 | [diff] [blame] | 95 | '-processor', |
| 96 | 'com.google.auto.value.processor.AutoValueProcessor,org.checkerframework.checker.nullness.NullnessChecker', |
| 97 | "-Astubs=$rootDir/checker-framework/stubs" |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 98 | ] |
Bogdan Drutu | 14920b4 | 2017-03-23 17:13:53 -0700 | [diff] [blame] | 99 | } |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 100 | it.options.encoding = "UTF-8" |
Bogdan Drutu | 709d97a | 2018-05-30 16:32:34 -0700 | [diff] [blame] | 101 | // Protobuf-generated code produces some warnings. |
| 102 | // https://github.com/google/protobuf/issues/2718 |
| 103 | it.options.compilerArgs += ["-Xlint:-cast"] |
Kristen Kozak | 3b57717 | 2018-02-26 16:15:04 -0800 | [diff] [blame] | 104 | if (!JavaVersion.current().isJava9()) { |
| 105 | // TODO(sebright): Enable -Werror for Java 9 once we upgrade AutoValue (issue #1017). |
Bogdan Drutu | b0e6050 | 2017-03-22 19:23:35 -0700 | [diff] [blame] | 106 | it.options.compilerArgs += ["-Werror"] |
| 107 | } |
Kristen Kozak | 3b57717 | 2018-02-26 16:15:04 -0800 | [diff] [blame] | 108 | if (JavaVersion.current().isJava7()) { |
| 109 | // Suppress all deprecation warnings with Java 7, since there are some bugs in its handling of |
| 110 | // @SuppressWarnings. See |
| 111 | // https://stackoverflow.com/questions/26921774/how-to-avoid-deprecation-warnings-when-suppresswarningsdeprecation-doesnt |
| 112 | it.options.compilerArgs += ["-Xlint:-deprecation"] |
| 113 | |
| 114 | // TODO(bdrutu): Enable for Java 7 when fix the issue with configuring bootstrap class. |
| 115 | // [options] bootstrap class path not set in conjunction with -source 1.6 |
| 116 | it.options.compilerArgs += ["-Xlint:-options"] |
| 117 | } |
| 118 | if (JavaVersion.current().isJava9()) { |
| 119 | // TODO(sebright): Currently, building with Java 9 produces the following "options" warnings: |
| 120 | // |
| 121 | // :opencensus-api:compileJavawarning: [options] bootstrap class path not set in conjunction with -source 1.6 |
| 122 | // warning: [options] source value 1.6 is obsolete and will be removed in a future release |
| 123 | // warning: [options] target value 1.6 is obsolete and will be removed in a future release |
| 124 | it.options.compilerArgs += ["-Xlint:-options"] |
| 125 | } |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 126 | } |
| 127 | |
| 128 | compileTestJava { |
| 129 | // serialVersionUID is basically guaranteed to be useless in tests |
| 130 | options.compilerArgs += ["-Xlint:-serial"] |
| 131 | // It undeprecates DoubleSubject.isEqualTo(Double). |
| 132 | options.compilerArgs += ["-Xlint:-deprecation"] |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 133 | } |
| 134 | |
| 135 | jar.manifest { |
| 136 | attributes('Implementation-Title': name, |
| 137 | 'Implementation-Version': version, |
| 138 | 'Built-By': System.getProperty('user.name'), |
| 139 | 'Built-JDK': System.getProperty('java.version'), |
| 140 | 'Source-Compatibility': sourceCompatibility, |
| 141 | 'Target-Compatibility': targetCompatibility) |
| 142 | } |
| 143 | |
| 144 | javadoc.options { |
| 145 | encoding = 'UTF-8' |
| 146 | links 'https://docs.oracle.com/javase/8/docs/api/' |
| 147 | } |
| 148 | |
| 149 | ext { |
Yang Song | 82e2988 | 2018-07-20 16:41:05 -0700 | [diff] [blame] | 150 | appengineVersion = '1.9.64' |
savaki | 6e885b6 | 2018-07-13 21:23:51 -0700 | [diff] [blame] | 151 | aspectjVersion = '1.8.11' |
Kristen Kozak | 9cb2384 | 2017-03-21 17:51:20 -0700 | [diff] [blame] | 152 | autoValueVersion = '1.4' |
Yang Song | 7a34c18 | 2018-07-26 09:32:03 -0700 | [diff] [blame] | 153 | findBugsAnnotationsVersion = '3.0.1' |
| 154 | findBugsJsr305Version = '3.0.2' |
Kristen Kozak | 372aa6d | 2018-06-13 16:28:51 -0700 | [diff] [blame] | 155 | errorProneVersion = '2.3.1' |
Yang Song | 5677310 | 2018-08-31 13:34:18 -0700 | [diff] [blame] | 156 | grpcVersion = '1.14.0' |
Yang Song | 422d78f | 2018-03-26 12:07:30 -0700 | [diff] [blame] | 157 | guavaVersion = '20.0' |
Yang Song | b9facf9 | 2018-09-27 16:13:17 -0700 | [diff] [blame] | 158 | googleAuthVersion = '0.11.0' |
| 159 | googleCloudBetaVersion = '0.64.0-beta' |
| 160 | googleCloudGaVersion = '1.46.0' |
sebright | 831fd8d | 2018-09-06 13:12:52 -0700 | [diff] [blame] | 161 | log4j2Version = '2.11.1' |
Maxime Petazzoni | 64d0583 | 2018-01-17 09:09:13 -0800 | [diff] [blame] | 162 | signalfxVersion = '0.0.39' |
Dino Oliva | 30c10cc | 2018-09-05 12:09:44 -0700 | [diff] [blame] | 163 | springBootVersion = '1.5.15.RELEASE' |
| 164 | springCloudVersion = '1.3.4.RELEASE' |
savaki | 6e885b6 | 2018-07-13 21:23:51 -0700 | [diff] [blame] | 165 | springVersion = '4.3.12.RELEASE' |
Yang Song | f30f808 | 2018-05-30 10:35:04 -0700 | [diff] [blame] | 166 | prometheusVersion = '0.4.0' |
Bogdan Drutu | 709d97a | 2018-05-30 16:32:34 -0700 | [diff] [blame] | 167 | protobufVersion = '3.5.1' |
Bogdan Drutu | 490dfe8 | 2018-02-15 20:15:39 -0800 | [diff] [blame] | 168 | zipkinReporterVersion = '2.3.2' |
Bogdan Drutu | 1c416c0 | 2018-05-31 06:28:54 -0700 | [diff] [blame] | 169 | jaegerReporterVersion = '0.27.0' |
Yang Song | b2251bf | 2018-09-20 14:53:54 -0700 | [diff] [blame] | 170 | opencensusProtoVersion = '0.0.2' |
Mayur Kale | 08d09c4 | 2018-10-08 14:25:01 -0700 | [diff] [blame] | 171 | dropwizardVersion = '3.1.2' |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 172 | |
| 173 | libraries = [ |
Bogdan Drutu | 709d97a | 2018-05-30 16:32:34 -0700 | [diff] [blame] | 174 | appengine_api: "com.google.appengine:appengine-api-1.0-sdk:${appengineVersion}", |
savaki | 6e885b6 | 2018-07-13 21:23:51 -0700 | [diff] [blame] | 175 | aspectj: "org.aspectj:aspectjrt:${aspectjVersion}", |
Bogdan Drutu | 31b3fdd | 2017-08-16 18:57:26 -0700 | [diff] [blame] | 176 | auto_value: "com.google.auto.value:auto-value:${autoValueVersion}", |
| 177 | auto_service: 'com.google.auto.service:auto-service:1.0-rc3', |
Stefan Schmidt | ee1fd02 | 2018-03-05 20:39:48 +0100 | [diff] [blame] | 178 | byte_buddy: 'net.bytebuddy:byte-buddy:1.7.11', |
Stefan Schmidt | cdd4ce2 | 2017-11-20 20:59:30 +0100 | [diff] [blame] | 179 | config: 'com.typesafe:config:1.2.1', |
Yang Song | 37fe5d3 | 2018-03-21 14:52:11 -0700 | [diff] [blame] | 180 | disruptor: 'com.lmax:disruptor:3.4.1', |
Kristen Kozak | ba78379 | 2017-11-10 18:28:44 -0800 | [diff] [blame] | 181 | errorprone: "com.google.errorprone:error_prone_annotations:${errorProneVersion}", |
Yang Song | 7a34c18 | 2018-07-26 09:32:03 -0700 | [diff] [blame] | 182 | findbugs_annotations: "com.google.code.findbugs:annotations:${findBugsAnnotationsVersion}", |
Bogdan Drutu | 61178e9 | 2017-09-20 09:41:37 -0700 | [diff] [blame] | 183 | google_auth: "com.google.auth:google-auth-library-credentials:${googleAuthVersion}", |
Yang Song | dd7234b | 2018-06-20 14:47:56 -0700 | [diff] [blame] | 184 | google_cloud_logging: "com.google.cloud:google-cloud-logging:${googleCloudGaVersion}", |
| 185 | google_cloud_trace: "com.google.cloud:google-cloud-trace:${googleCloudBetaVersion}", |
sebright | 831fd8d | 2018-09-06 13:12:52 -0700 | [diff] [blame] | 186 | log4j2: "org.apache.logging.log4j:log4j-core:${log4j2Version}", |
Adrian Cole | d05056c | 2017-09-24 10:46:17 +0800 | [diff] [blame] | 187 | zipkin_reporter: "io.zipkin.reporter2:zipkin-reporter:${zipkinReporterVersion}", |
| 188 | zipkin_urlconnection: "io.zipkin.reporter2:zipkin-sender-urlconnection:${zipkinReporterVersion}", |
Marc Carré | 8190805 | 2018-03-16 01:03:49 +0000 | [diff] [blame] | 189 | jaeger_reporter: "com.uber.jaeger:jaeger-core:${jaegerReporterVersion}", |
Yang Song | dd7234b | 2018-06-20 14:47:56 -0700 | [diff] [blame] | 190 | google_cloud_monitoring: "com.google.cloud:google-cloud-monitoring:${googleCloudGaVersion}", |
Bogdan Drutu | 8781dbb | 2017-09-05 10:40:42 -0700 | [diff] [blame] | 191 | grpc_context: "io.grpc:grpc-context:${grpcVersion}", |
| 192 | grpc_core: "io.grpc:grpc-core:${grpcVersion}", |
Yang Song | dea86ae | 2018-10-08 19:10:20 -0700 | [diff] [blame] | 193 | grpc_netty: "io.grpc:grpc-netty:${grpcVersion}", |
| 194 | grpc_stub: "io.grpc:grpc-stub:${grpcVersion}", |
Bogdan Drutu | 31b3fdd | 2017-08-16 18:57:26 -0700 | [diff] [blame] | 195 | guava: "com.google.guava:guava:${guavaVersion}", |
Yang Song | 7a34c18 | 2018-07-26 09:32:03 -0700 | [diff] [blame] | 196 | jsr305: "com.google.code.findbugs:jsr305:${findBugsJsr305Version}", |
Maxime Petazzoni | 64d0583 | 2018-01-17 09:09:13 -0800 | [diff] [blame] | 197 | signalfx_java: "com.signalfx.public:signalfx-java:${signalfxVersion}", |
savaki | 6e885b6 | 2018-07-13 21:23:51 -0700 | [diff] [blame] | 198 | spring_aspects: "org.springframework:spring-aspects:${springVersion}", |
Dino Oliva | 30c10cc | 2018-09-05 12:09:44 -0700 | [diff] [blame] | 199 | spring_boot_starter_web: "org.springframework.boot:spring-boot-starter-web:${springBootVersion}", |
| 200 | spring_cloud_build: "org.springframework.cloud:spring-cloud-build:${springCloudVersion}", |
| 201 | spring_cloud_starter_sleuth: "org.springframework.cloud:spring-cloud-starter-sleuth:${springCloudVersion}", |
savaki | 6e885b6 | 2018-07-13 21:23:51 -0700 | [diff] [blame] | 202 | spring_context: "org.springframework:spring-context:${springVersion}", |
| 203 | spring_context_support: "org.springframework:spring-context-support:${springVersion}", |
Yang Song | b0d3967 | 2018-02-13 12:47:32 -0800 | [diff] [blame] | 204 | prometheus_simpleclient: "io.prometheus:simpleclient:${prometheusVersion}", |
Bogdan Drutu | 709d97a | 2018-05-30 16:32:34 -0700 | [diff] [blame] | 205 | protobuf: "com.google.protobuf:protobuf-java:${protobufVersion}", |
Yang Song | b2251bf | 2018-09-20 14:53:54 -0700 | [diff] [blame] | 206 | opencensus_proto: "io.opencensus:opencensus-proto:${opencensusProtoVersion}", |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 207 | |
| 208 | // Test dependencies. |
Bogdan Drutu | 31b3fdd | 2017-08-16 18:57:26 -0700 | [diff] [blame] | 209 | guava_testlib: "com.google.guava:guava-testlib:${guavaVersion}", |
Bogdan Drutu | bbe1d0f | 2017-10-26 14:05:26 -0700 | [diff] [blame] | 210 | junit: 'junit:junit:4.12', |
Kristen Kozak | 23be8f0 | 2017-11-10 15:01:23 -0800 | [diff] [blame] | 211 | mockito: 'org.mockito:mockito-core:1.9.5', |
savaki | 11f4029 | 2018-07-18 05:37:54 -0700 | [diff] [blame] | 212 | spring_test: "org.springframework:spring-test:${springVersion}", |
Bogdan Drutu | 31b3fdd | 2017-08-16 18:57:26 -0700 | [diff] [blame] | 213 | truth: 'com.google.truth:truth:0.30', |
Mayur Kale | 08d09c4 | 2018-10-08 14:25:01 -0700 | [diff] [blame] | 214 | dropwizard: "io.dropwizard.metrics:metrics-core:${dropwizardVersion}", |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 215 | ] |
| 216 | } |
| 217 | |
Bogdan Drutu | 0eaaccb | 2018-01-23 19:38:02 -0800 | [diff] [blame] | 218 | configurations { |
| 219 | compile { |
| 220 | // Detect Maven Enforcer's dependencyConvergence failures. We only |
| 221 | // care for artifacts used as libraries by others. |
Bogdan Drutu | 13cf2b8 | 2018-02-26 15:24:26 -0800 | [diff] [blame] | 222 | if (!(project.name in ['benchmarks', 'opencensus-all', |
| 223 | 'opencensus-exporter-stats-stackdriver', |
Bogdan Drutu | 1c416c0 | 2018-05-31 06:28:54 -0700 | [diff] [blame] | 224 | 'opencensus-exporter-trace-stackdriver', |
| 225 | 'opencensus-exporter-trace-jaeger'])) { |
Bogdan Drutu | 0eaaccb | 2018-01-23 19:38:02 -0800 | [diff] [blame] | 226 | resolutionStrategy.failOnVersionConflict() |
| 227 | } |
| 228 | } |
| 229 | } |
| 230 | |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 231 | dependencies { |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 232 | if (useCheckerFramework) { |
sebright | 33fa631 | 2018-09-06 12:07:06 -0700 | [diff] [blame] | 233 | ext.checkerFrameworkVersion = '2.5.5' |
Kristen Kozak | 3d3a446 | 2018-04-16 15:50:56 -0700 | [diff] [blame] | 234 | |
| 235 | // 2.4.0 is the last version of the Checker Framework compiler that supports annotations |
| 236 | // in comments, though it should continue to work with newer versions of the Checker Framework. |
| 237 | // See |
| 238 | // https://github.com/census-instrumentation/opencensus-java/pull/1112#issuecomment-381366366. |
| 239 | ext.checkerFrameworkCompilerVersion = '2.4.0' |
| 240 | |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 241 | ext.jdkVersion = 'jdk8' |
| 242 | checkerFrameworkAnnotatedJDK "org.checkerframework:${jdkVersion}:${checkerFrameworkVersion}" |
Kristen Kozak | 3d3a446 | 2018-04-16 15:50:56 -0700 | [diff] [blame] | 243 | checkerFrameworkJavac "org.checkerframework:compiler:${checkerFrameworkCompilerVersion}" |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 244 | compileOnly "org.checkerframework:checker:${checkerFrameworkVersion}" |
| 245 | compile "org.checkerframework:checker-qual:${checkerFrameworkVersion}" |
| 246 | compileOnly libraries.auto_value |
| 247 | } |
| 248 | |
Kristen Kozak | 1bb75e5 | 2018-03-26 16:49:03 -0700 | [diff] [blame] | 249 | compileOnly libraries.errorprone, |
| 250 | libraries.jsr305 |
Bogdan Drutu | 07f0dd2 | 2017-03-22 08:54:53 -0700 | [diff] [blame] | 251 | |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 252 | testCompile libraries.guava_testlib, |
| 253 | libraries.junit, |
| 254 | libraries.mockito, |
| 255 | libraries.truth |
| 256 | |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 257 | if (useErrorProne && JavaVersion.current().isJava8Compatible()) { |
Bogdan Drutu | b0e6050 | 2017-03-22 19:23:35 -0700 | [diff] [blame] | 258 | // The ErrorProne plugin defaults to the latest, which would break our |
| 259 | // build if error prone releases a new version with a new check |
Kristen Kozak | ba78379 | 2017-11-10 18:28:44 -0800 | [diff] [blame] | 260 | errorprone "com.google.errorprone:error_prone_core:${errorProneVersion}" |
Bogdan Drutu | b0e6050 | 2017-03-22 19:23:35 -0700 | [diff] [blame] | 261 | } |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 262 | } |
| 263 | |
Bogdan Drutu | 07f0dd2 | 2017-03-22 08:54:53 -0700 | [diff] [blame] | 264 | findbugs { |
Yang Song | 7a34c18 | 2018-07-26 09:32:03 -0700 | [diff] [blame] | 265 | toolVersion = findBugsAnnotationsVersion |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 266 | ignoreFailures = false // bug free or it doesn't ship! |
Bogdan Drutu | 07f0dd2 | 2017-03-22 08:54:53 -0700 | [diff] [blame] | 267 | effort = 'max' |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 268 | reportLevel = 'low' // low = sensitive to even minor mistakes |
| 269 | omitVisitors = [] // bugs that we want to ignore |
Kristen Kozak | b27b1c7 | 2017-04-12 16:38:04 -0700 | [diff] [blame] | 270 | excludeFilter = file("$rootDir/findbugs-exclude.xml") |
Bogdan Drutu | 07f0dd2 | 2017-03-22 08:54:53 -0700 | [diff] [blame] | 271 | } |
Bogdan Drutu | cca79a3 | 2017-03-27 14:17:16 -0700 | [diff] [blame] | 272 | // Generate html report for findbugs. |
| 273 | findbugsMain { |
| 274 | reports { |
| 275 | xml.enabled = false |
| 276 | html.enabled = true |
| 277 | } |
| 278 | } |
Bogdan Drutu | eabc800 | 2018-08-28 14:40:27 -0700 | [diff] [blame] | 279 | findbugsTest { |
| 280 | reports { |
| 281 | xml.enabled = false |
| 282 | html.enabled = true |
| 283 | } |
| 284 | } |
Bogdan Drutu | c0e0b22 | 2018-09-11 00:08:18 -0700 | [diff] [blame] | 285 | findbugsJmh { |
| 286 | reports { |
| 287 | xml.enabled = false |
| 288 | html.enabled = true |
| 289 | } |
| 290 | } |
Bogdan Drutu | 07f0dd2 | 2017-03-22 08:54:53 -0700 | [diff] [blame] | 291 | |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 292 | checkstyle { |
Bogdan Drutu | b216db3 | 2017-08-24 22:09:37 -0700 | [diff] [blame] | 293 | configFile = file("$rootDir/buildscripts/checkstyle.xml") |
sebright | 0a2f579 | 2018-08-16 15:04:02 -0700 | [diff] [blame] | 294 | toolVersion = "8.12" |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 295 | ignoreFailures = false |
| 296 | if (rootProject.hasProperty("checkstyle.ignoreFailures")) { |
| 297 | ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean() |
| 298 | } |
| 299 | configProperties["rootDir"] = rootDir |
| 300 | } |
| 301 | |
Bogdan Drutu | b0e6050 | 2017-03-22 19:23:35 -0700 | [diff] [blame] | 302 | // Disable checkstyle if no java8. |
| 303 | checkstyleMain.enabled = JavaVersion.current().isJava8Compatible() |
| 304 | checkstyleTest.enabled = JavaVersion.current().isJava8Compatible() |
Bogdan Drutu | c0e0b22 | 2018-09-11 00:08:18 -0700 | [diff] [blame] | 305 | checkstyleJmh.enabled = JavaVersion.current().isJava8Compatible() |
Bogdan Drutu | b0e6050 | 2017-03-22 19:23:35 -0700 | [diff] [blame] | 306 | |
Bogdan Drutu | 6cb4dd2 | 2017-11-03 09:25:12 +1100 | [diff] [blame] | 307 | // Google formatter works only on java8. |
| 308 | if (JavaVersion.current().isJava8Compatible()) { |
| 309 | googleJavaFormat { |
Bogdan Drutu | af3565c | 2018-07-19 13:47:30 -0400 | [diff] [blame] | 310 | toolVersion '1.6' |
Bogdan Drutu | 6cb4dd2 | 2017-11-03 09:25:12 +1100 | [diff] [blame] | 311 | } |
| 312 | |
Stefan Schmidt | fe8b990 | 2017-11-03 17:26:09 +0100 | [diff] [blame] | 313 | afterEvaluate { // Allow subproject to add more source sets. |
| 314 | tasks.googleJavaFormat { |
| 315 | source = sourceSets*.allJava |
| 316 | include '**/*.java' |
| 317 | } |
Bogdan Drutu | 6cb4dd2 | 2017-11-03 09:25:12 +1100 | [diff] [blame] | 318 | |
Stefan Schmidt | fe8b990 | 2017-11-03 17:26:09 +0100 | [diff] [blame] | 319 | tasks.verifyGoogleJavaFormat { |
| 320 | source = sourceSets*.allJava |
| 321 | include '**/*.java' |
| 322 | } |
Bogdan Drutu | 6cb4dd2 | 2017-11-03 09:25:12 +1100 | [diff] [blame] | 323 | } |
| 324 | } |
| 325 | |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 326 | signing { |
| 327 | required false |
| 328 | sign configurations.archives |
| 329 | } |
| 330 | |
| 331 | task javadocJar(type: Jar) { |
| 332 | classifier = 'javadoc' |
| 333 | from javadoc |
| 334 | } |
| 335 | |
| 336 | task sourcesJar(type: Jar) { |
| 337 | classifier = 'sources' |
| 338 | from sourceSets.main.allSource |
| 339 | } |
| 340 | |
| 341 | artifacts { |
| 342 | archives javadocJar, sourcesJar |
| 343 | } |
| 344 | |
Bogdan Drutu | c0e0b22 | 2018-09-11 00:08:18 -0700 | [diff] [blame] | 345 | jmh { |
| 346 | jmhVersion = '1.20' |
| 347 | warmupIterations = 10 |
| 348 | iterations = 10 |
| 349 | fork = 1 |
| 350 | failOnError = true |
| 351 | resultFormat = 'JSON' |
| 352 | // Allow to run single benchmark class like: |
| 353 | // ./gradlew -PjmhIncludeSingleClass=StatsTraceContextBenchmark clean :grpc-core:jmh |
| 354 | if (project.hasProperty('jmhIncludeSingleClass')) { |
| 355 | include = [ |
| 356 | project.property('jmhIncludeSingleClass') |
| 357 | ] |
| 358 | } |
| 359 | } |
| 360 | |
| 361 | jmhReport { |
| 362 | jmhResultPath = project.file("${project.buildDir}/reports/jmh/results.json") |
| 363 | jmhReportOutput = project.file("${project.buildDir}/reports/jmh") |
| 364 | } |
| 365 | |
| 366 | tasks.jmh.finalizedBy tasks.jmhReport |
| 367 | |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 368 | uploadArchives { |
| 369 | repositories { |
| 370 | mavenDeployer { |
| 371 | beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } |
| 372 | |
| 373 | def configureAuth = { |
| 374 | if (rootProject.hasProperty('ossrhUsername') && rootProject.hasProperty('ossrhPassword')) { |
| 375 | authentication(userName:rootProject.ossrhUsername, password: rootProject.ossrhPassword) |
| 376 | } |
| 377 | } |
| 378 | |
| 379 | repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/", configureAuth) |
| 380 | |
| 381 | snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/", configureAuth) |
| 382 | |
| 383 | pom.project { |
Bogdan Drutu | 1d2eda6 | 2017-06-19 23:54:11 -0700 | [diff] [blame] | 384 | name "OpenCensus" |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 385 | packaging 'jar' |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 386 | description project.description |
Bogdan Drutu | 95c9b20 | 2017-06-21 23:56:49 -0700 | [diff] [blame] | 387 | url 'https://github.com/census-instrumentation/opencensus-java' |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 388 | |
| 389 | scm { |
Bogdan Drutu | 95c9b20 | 2017-06-21 23:56:49 -0700 | [diff] [blame] | 390 | connection 'scm:svn:https://github.com/census-instrumentation/opencensus-java' |
| 391 | developerConnection 'scm:git:git@github.com/census-instrumentation/opencensus-java' |
| 392 | url 'https://github.com/census-instrumentation/opencensus-java' |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 393 | } |
| 394 | |
| 395 | licenses { |
| 396 | license { |
| 397 | name 'The Apache License, Version 2.0' |
| 398 | url 'http://www.apache.org/licenses/LICENSE-2.0.txt' |
| 399 | } |
| 400 | } |
| 401 | |
| 402 | developers { |
| 403 | developer { |
Bogdan Drutu | 1d2eda6 | 2017-06-19 23:54:11 -0700 | [diff] [blame] | 404 | id 'io.opencensus' |
| 405 | name 'OpenCensus Contributors' |
Bogdan Drutu | dca6c29 | 2017-10-27 14:09:23 -0700 | [diff] [blame] | 406 | email 'census-developers@googlegroups.com' |
Bogdan Drutu | 1d2eda6 | 2017-06-19 23:54:11 -0700 | [diff] [blame] | 407 | url 'opencensus.io' |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 408 | // https://issues.gradle.org/browse/GRADLE-2719 |
Bogdan Drutu | 6c2b675 | 2018-02-15 17:10:23 -0800 | [diff] [blame] | 409 | organization = 'OpenCensus Authors' |
| 410 | organizationUrl 'https://www.opencensus.io' |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 411 | } |
| 412 | } |
| 413 | } |
| 414 | } |
| 415 | } |
| 416 | } |
Bogdan Drutu | 6cb4dd2 | 2017-11-03 09:25:12 +1100 | [diff] [blame] | 417 | |
Stefan Schmidt | 973ee9b | 2017-08-24 22:34:33 +0200 | [diff] [blame] | 418 | // Upload the following artifacts only: |
| 419 | uploadArchives.onlyIf { |
| 420 | name in ['opencensus-api', |
| 421 | 'opencensus-contrib-agent', |
Bogdan Drutu | 709d97a | 2018-05-30 16:32:34 -0700 | [diff] [blame] | 422 | 'opencensus-contrib-appengine-standard-util', |
Mayur Kale | 08d09c4 | 2018-10-08 14:25:01 -0700 | [diff] [blame] | 423 | 'opencensus-contrib-dropwizard', |
Yang Song | 5f7a05e | 2018-07-12 11:16:35 -0700 | [diff] [blame] | 424 | 'opencensus-contrib-exemplar-util', |
sebright | 5298e6c | 2017-10-27 10:43:00 -0700 | [diff] [blame] | 425 | 'opencensus-contrib-grpc-metrics', |
Bogdan Drutu | 8781dbb | 2017-09-05 10:40:42 -0700 | [diff] [blame] | 426 | 'opencensus-contrib-grpc-util', |
Bogdan Drutu | c90bec7 | 2018-01-25 15:13:17 -0800 | [diff] [blame] | 427 | 'opencensus-contrib-http-util', |
sebright | 93ee8f4 | 2018-09-14 11:34:05 -0700 | [diff] [blame] | 428 | 'opencensus-contrib-log-correlation-log4j2', |
Kristen Kozak | 6b7ff22 | 2018-06-15 11:54:00 -0700 | [diff] [blame] | 429 | 'opencensus-contrib-log-correlation-stackdriver', |
Yang Song | 86dadee | 2018-04-26 09:53:32 -0700 | [diff] [blame] | 430 | 'opencensus-contrib-monitored-resource-util', |
savaki | 6e885b6 | 2018-07-13 21:23:51 -0700 | [diff] [blame] | 431 | 'opencensus-contrib-spring', |
Bogdan Drutu | 20720ce | 2018-09-07 12:15:16 -0700 | [diff] [blame] | 432 | 'opencensus-contrib-spring-sleuth-v1x', |
Bogdan Drutu | a851696 | 2017-08-28 13:10:25 -0700 | [diff] [blame] | 433 | 'opencensus-contrib-zpages', |
Yang Song | b0d3967 | 2018-02-13 12:47:32 -0800 | [diff] [blame] | 434 | 'opencensus-exporter-stats-prometheus', |
Maxime Petazzoni | 64d0583 | 2018-01-17 09:09:13 -0800 | [diff] [blame] | 435 | 'opencensus-exporter-stats-signalfx', |
Yang Song | b55bb81 | 2017-11-16 17:57:32 -0800 | [diff] [blame] | 436 | 'opencensus-exporter-stats-stackdriver', |
Fabian Lange | 17a1a1a | 2018-02-09 14:33:30 -0500 | [diff] [blame] | 437 | 'opencensus-exporter-trace-instana', |
Bogdan Drutu | a851696 | 2017-08-28 13:10:25 -0700 | [diff] [blame] | 438 | 'opencensus-exporter-trace-logging', |
Yang Song | a36f795 | 2018-09-24 15:27:45 -0700 | [diff] [blame] | 439 | 'opencensus-exporter-trace-ocagent', |
Bogdan Drutu | a851696 | 2017-08-28 13:10:25 -0700 | [diff] [blame] | 440 | 'opencensus-exporter-trace-stackdriver', |
Bogdan Drutu | 0b4f14a | 2017-10-27 11:04:41 -0700 | [diff] [blame] | 441 | 'opencensus-exporter-trace-zipkin', |
Marc Carré | 8190805 | 2018-03-16 01:03:49 +0000 | [diff] [blame] | 442 | 'opencensus-exporter-trace-jaeger', |
Stefan Schmidt | 973ee9b | 2017-08-24 22:34:33 +0200 | [diff] [blame] | 443 | 'opencensus-impl-core', |
| 444 | 'opencensus-impl-lite', |
| 445 | 'opencensus-impl', |
| 446 | 'opencensus-testing'] |
| 447 | } |
Bogdan Drutu | eba004c | 2017-04-13 13:52:39 -0700 | [diff] [blame] | 448 | |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 449 | // At a test failure, log the stack trace to the console so that we don't |
| 450 | // have to open the HTML in a browser. |
| 451 | test { |
| 452 | testLogging { |
| 453 | exceptionFormat = 'full' |
| 454 | showExceptions true |
| 455 | showCauses true |
| 456 | showStackTraces true |
| 457 | } |
| 458 | maxHeapSize = '1500m' |
| 459 | } |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 460 | |
| 461 | if (useCheckerFramework) { |
| 462 | allprojects { |
| 463 | tasks.withType(JavaCompile).all { JavaCompile compile -> |
| 464 | compile.doFirst { |
| 465 | compile.options.compilerArgs += [ |
Kristen Kozak | 192d43a | 2018-03-27 12:28:55 -0700 | [diff] [blame] | 466 | '-Xmaxerrs', '10000', |
| 467 | "-Xbootclasspath/p:${configurations.checkerFrameworkAnnotatedJDK.asPath}", |
sebright | 8939d9f | 2018-08-01 16:34:05 -0700 | [diff] [blame] | 468 | "-AskipDefs=\\.AutoValue_|^io.opencensus.contrib.appengine.standard.util.TraceIdProto\$|^io.opencensus.contrib.appengine.standard.util.TraceProto\$", |
Kristen Kozak | d45a961 | 2018-04-04 13:50:40 -0700 | [diff] [blame] | 469 | "-AinvariantArrays" |
Kristen Kozak | a5f4a10 | 2017-12-19 20:02:00 -0800 | [diff] [blame] | 470 | ] |
| 471 | options.fork = true |
| 472 | options.forkOptions.jvmArgs += ["-Xbootclasspath/p:${configurations.checkerFrameworkJavac.asPath}"] |
| 473 | } |
| 474 | } |
| 475 | } |
| 476 | } |
Stefan Schmidt | 7d681cc | 2018-03-09 21:41:09 +0100 | [diff] [blame] | 477 | |
| 478 | // For projects that depend on gRPC during test execution, make sure to |
| 479 | // also configure ALPN if running on a platform (e.g. FreeBSD) that is not |
| 480 | // supported by io.netty:netty-tcnative-boringssl-static:jar. Also see: |
| 481 | // https://github.com/grpc/grpc-java/blob/master/SECURITY.md#tls-with-jdk-jetty-alpnnpn |
| 482 | if (project.name in ['opencensus-exporter-stats-stackdriver', |
| 483 | 'opencensus-exporter-trace-stackdriver']) { |
| 484 | def os = org.gradle.internal.os.OperatingSystem.current() |
| 485 | if (!os.isLinux() && !os.isWindows() && !os.isMacOsX()) { |
| 486 | configurations { |
| 487 | alpn |
| 488 | } |
| 489 | dependencies { |
| 490 | alpn 'org.mortbay.jetty.alpn:jetty-alpn-agent:2.0.7' |
| 491 | } |
| 492 | test { |
| 493 | jvmArgs "-javaagent:${configurations.alpn.asPath}" |
| 494 | } |
| 495 | } |
| 496 | } |
Bogdan Drutu | 00202c0 | 2017-03-21 10:52:28 -0700 | [diff] [blame] | 497 | } |