blob: 07751679c0f063fbe9cc7a6c3bbb808adb0cc804 [file] [log] [blame]
Bogdan Drutu00202c02017-03-21 10:52:28 -07001buildscript {
2 repositories {
3 mavenCentral()
4 mavenLocal()
5 maven {
6 url "https://plugins.gradle.org/m2/"
7 }
8 }
9 dependencies {
Yang Songb9facf92018-09-27 16:13:17 -070010 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 Drutuaf3565c2018-07-19 13:47:30 -040014 classpath "gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.7.1"
Bogdan Drutuc0e0b222018-09-11 00:08:18 -070015 classpath "me.champeau.gradle:jmh-gradle-plugin:0.4.7"
16 classpath "gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.7.0"
Bogdan Drutu00202c02017-03-21 10:52:28 -070017 }
18}
19
Stefan Schmidte220edb2017-08-18 20:49:18 +020020// Display the version report using: ./gradlew dependencyUpdates
21// Also see https://github.com/ben-manes/gradle-versions-plugin.
22apply plugin: 'com.github.ben-manes.versions'
23
Kristen Kozaka5f4a102017-12-19 20:02:00 -080024// Don't use the Checker Framework by default, since it interferes with Error Prone.
25def useCheckerFramework = rootProject.hasProperty('checkerFramework')
26def useErrorProne = !useCheckerFramework
27
Bogdan Drutu00202c02017-03-21 10:52:28 -070028subprojects {
29 apply plugin: "checkstyle"
30 apply plugin: 'maven'
31 apply plugin: 'idea'
Fabian Lange5430ec72018-02-02 14:23:58 -080032 apply plugin: 'eclipse'
Bogdan Drutu00202c02017-03-21 10:52:28 -070033 apply plugin: 'java'
34 apply plugin: "signing"
35 apply plugin: "jacoco"
Bogdan Drutub0e60502017-03-22 19:23:35 -070036 // The plugin only has an effect if a signature is specified
37 apply plugin: 'ru.vyarus.animalsniffer'
Bogdan Drutu07f0dd22017-03-22 08:54:53 -070038 apply plugin: 'findbugs'
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +110039 apply plugin: 'net.ltgt.apt'
Bogdan Drutuc0e0b222018-09-11 00:08:18 -070040 apply plugin: "me.champeau.gradle.jmh"
41 apply plugin: "io.morethan.jmhreport"
Bogdan Drutub0e60502017-03-22 19:23:35 -070042 // Plugins that require java8
43 if (JavaVersion.current().isJava8Compatible()) {
Kristen Kozaka5f4a102017-12-19 20:02:00 -080044 if (useErrorProne) {
45 apply plugin: "net.ltgt.errorprone"
46 }
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +110047 apply plugin: 'com.github.sherter.google-java-format'
Bogdan Drutub0e60502017-03-22 19:23:35 -070048 }
Bogdan Drutu00202c02017-03-21 10:52:28 -070049
Bogdan Drutu1d2eda62017-06-19 23:54:11 -070050 group = "io.opencensus"
sebright7b1665e2018-09-14 13:41:30 -070051 version = "0.17.0-SNAPSHOT" // CURRENT_OPENCENSUS_VERSION
Bogdan Drutu00202c02017-03-21 10:52:28 -070052
53 sourceCompatibility = 1.6
54 targetCompatibility = 1.6
55
56 repositories {
57 mavenCentral()
58 mavenLocal()
59 }
60
Kristen Kozaka5f4a102017-12-19 20:02:00 -080061 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 Drutuc0e0b222018-09-11 00:08:18 -070072 [compileJava, compileTestJava, compileJmhJava].each() {
Kristen Kozakebb2d1d2018-02-26 16:07:52 -080073 // 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 Kozak9cb23842017-03-21 17:51:20 -070075 // 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 Kozaka5f4a102017-12-19 20:02:00 -080078 if (useErrorProne) {
79 if (JavaVersion.current().isJava8Compatible()) {
Kristen Kozak372aa6d2018-06-13 16:28:51 -070080 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 Drutu14920b42017-03-23 17:13:53 -070091 }
Kristen Kozaka5f4a102017-12-19 20:02:00 -080092 }
93 if (useCheckerFramework) {
94 it.options.compilerArgs += [
Kristen Kozak3c526062017-12-28 12:27:22 -080095 '-processor',
96 'com.google.auto.value.processor.AutoValueProcessor,org.checkerframework.checker.nullness.NullnessChecker',
97 "-Astubs=$rootDir/checker-framework/stubs"
Kristen Kozaka5f4a102017-12-19 20:02:00 -080098 ]
Bogdan Drutu14920b42017-03-23 17:13:53 -070099 }
Bogdan Drutu00202c02017-03-21 10:52:28 -0700100 it.options.encoding = "UTF-8"
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700101 // Protobuf-generated code produces some warnings.
102 // https://github.com/google/protobuf/issues/2718
103 it.options.compilerArgs += ["-Xlint:-cast"]
Kristen Kozak3b577172018-02-26 16:15:04 -0800104 if (!JavaVersion.current().isJava9()) {
105 // TODO(sebright): Enable -Werror for Java 9 once we upgrade AutoValue (issue #1017).
Bogdan Drutub0e60502017-03-22 19:23:35 -0700106 it.options.compilerArgs += ["-Werror"]
107 }
Kristen Kozak3b577172018-02-26 16:15:04 -0800108 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 Drutu00202c02017-03-21 10:52:28 -0700126 }
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 Drutu00202c02017-03-21 10:52:28 -0700133 }
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 Song82e29882018-07-20 16:41:05 -0700150 appengineVersion = '1.9.64'
savaki6e885b62018-07-13 21:23:51 -0700151 aspectjVersion = '1.8.11'
Kristen Kozak9cb23842017-03-21 17:51:20 -0700152 autoValueVersion = '1.4'
Yang Song7a34c182018-07-26 09:32:03 -0700153 findBugsAnnotationsVersion = '3.0.1'
154 findBugsJsr305Version = '3.0.2'
Kristen Kozak372aa6d2018-06-13 16:28:51 -0700155 errorProneVersion = '2.3.1'
Yang Song56773102018-08-31 13:34:18 -0700156 grpcVersion = '1.14.0'
Yang Song422d78f2018-03-26 12:07:30 -0700157 guavaVersion = '20.0'
Yang Songb9facf92018-09-27 16:13:17 -0700158 googleAuthVersion = '0.11.0'
159 googleCloudBetaVersion = '0.64.0-beta'
160 googleCloudGaVersion = '1.46.0'
Maxime Petazzoni64d05832018-01-17 09:09:13 -0800161 signalfxVersion = '0.0.39'
Dino Oliva30c10cc2018-09-05 12:09:44 -0700162 springBootVersion = '1.5.15.RELEASE'
163 springCloudVersion = '1.3.4.RELEASE'
savaki6e885b62018-07-13 21:23:51 -0700164 springVersion = '4.3.12.RELEASE'
Yang Songf30f8082018-05-30 10:35:04 -0700165 prometheusVersion = '0.4.0'
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700166 protobufVersion = '3.5.1'
Bogdan Drutu490dfe82018-02-15 20:15:39 -0800167 zipkinReporterVersion = '2.3.2'
Bogdan Drutu1c416c02018-05-31 06:28:54 -0700168 jaegerReporterVersion = '0.27.0'
Yang Songb2251bf2018-09-20 14:53:54 -0700169 opencensusProtoVersion = '0.0.2'
Mayur Kale08d09c42018-10-08 14:25:01 -0700170 dropwizardVersion = '3.1.2'
Bogdan Drutu00202c02017-03-21 10:52:28 -0700171
172 libraries = [
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700173 appengine_api: "com.google.appengine:appengine-api-1.0-sdk:${appengineVersion}",
savaki6e885b62018-07-13 21:23:51 -0700174 aspectj: "org.aspectj:aspectjrt:${aspectjVersion}",
Bogdan Drutu31b3fdd2017-08-16 18:57:26 -0700175 auto_value: "com.google.auto.value:auto-value:${autoValueVersion}",
176 auto_service: 'com.google.auto.service:auto-service:1.0-rc3',
Stefan Schmidtee1fd022018-03-05 20:39:48 +0100177 byte_buddy: 'net.bytebuddy:byte-buddy:1.7.11',
Stefan Schmidtcdd4ce22017-11-20 20:59:30 +0100178 config: 'com.typesafe:config:1.2.1',
Yang Song37fe5d32018-03-21 14:52:11 -0700179 disruptor: 'com.lmax:disruptor:3.4.1',
Kristen Kozakba783792017-11-10 18:28:44 -0800180 errorprone: "com.google.errorprone:error_prone_annotations:${errorProneVersion}",
Yang Song7a34c182018-07-26 09:32:03 -0700181 findbugs_annotations: "com.google.code.findbugs:annotations:${findBugsAnnotationsVersion}",
Bogdan Drutu61178e92017-09-20 09:41:37 -0700182 google_auth: "com.google.auth:google-auth-library-credentials:${googleAuthVersion}",
Yang Songdd7234b2018-06-20 14:47:56 -0700183 google_cloud_logging: "com.google.cloud:google-cloud-logging:${googleCloudGaVersion}",
184 google_cloud_trace: "com.google.cloud:google-cloud-trace:${googleCloudBetaVersion}",
Adrian Coled05056c2017-09-24 10:46:17 +0800185 zipkin_reporter: "io.zipkin.reporter2:zipkin-reporter:${zipkinReporterVersion}",
186 zipkin_urlconnection: "io.zipkin.reporter2:zipkin-sender-urlconnection:${zipkinReporterVersion}",
Marc Carré81908052018-03-16 01:03:49 +0000187 jaeger_reporter: "com.uber.jaeger:jaeger-core:${jaegerReporterVersion}",
Yang Songdd7234b2018-06-20 14:47:56 -0700188 google_cloud_monitoring: "com.google.cloud:google-cloud-monitoring:${googleCloudGaVersion}",
Bogdan Drutu8781dbb2017-09-05 10:40:42 -0700189 grpc_context: "io.grpc:grpc-context:${grpcVersion}",
190 grpc_core: "io.grpc:grpc-core:${grpcVersion}",
Yang Songdea86ae2018-10-08 19:10:20 -0700191 grpc_netty: "io.grpc:grpc-netty:${grpcVersion}",
192 grpc_stub: "io.grpc:grpc-stub:${grpcVersion}",
Bogdan Drutu31b3fdd2017-08-16 18:57:26 -0700193 guava: "com.google.guava:guava:${guavaVersion}",
Yang Song7a34c182018-07-26 09:32:03 -0700194 jsr305: "com.google.code.findbugs:jsr305:${findBugsJsr305Version}",
Maxime Petazzoni64d05832018-01-17 09:09:13 -0800195 signalfx_java: "com.signalfx.public:signalfx-java:${signalfxVersion}",
savaki6e885b62018-07-13 21:23:51 -0700196 spring_aspects: "org.springframework:spring-aspects:${springVersion}",
Dino Oliva30c10cc2018-09-05 12:09:44 -0700197 spring_boot_starter_web: "org.springframework.boot:spring-boot-starter-web:${springBootVersion}",
198 spring_cloud_build: "org.springframework.cloud:spring-cloud-build:${springCloudVersion}",
199 spring_cloud_starter_sleuth: "org.springframework.cloud:spring-cloud-starter-sleuth:${springCloudVersion}",
savaki6e885b62018-07-13 21:23:51 -0700200 spring_context: "org.springframework:spring-context:${springVersion}",
201 spring_context_support: "org.springframework:spring-context-support:${springVersion}",
Yang Songb0d39672018-02-13 12:47:32 -0800202 prometheus_simpleclient: "io.prometheus:simpleclient:${prometheusVersion}",
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700203 protobuf: "com.google.protobuf:protobuf-java:${protobufVersion}",
Yang Songb2251bf2018-09-20 14:53:54 -0700204 opencensus_proto: "io.opencensus:opencensus-proto:${opencensusProtoVersion}",
Bogdan Drutu00202c02017-03-21 10:52:28 -0700205
206 // Test dependencies.
Bogdan Drutu31b3fdd2017-08-16 18:57:26 -0700207 guava_testlib: "com.google.guava:guava-testlib:${guavaVersion}",
Bogdan Drutubbe1d0f2017-10-26 14:05:26 -0700208 junit: 'junit:junit:4.12',
Kristen Kozak23be8f02017-11-10 15:01:23 -0800209 mockito: 'org.mockito:mockito-core:1.9.5',
savaki11f40292018-07-18 05:37:54 -0700210 spring_test: "org.springframework:spring-test:${springVersion}",
Bogdan Drutu31b3fdd2017-08-16 18:57:26 -0700211 truth: 'com.google.truth:truth:0.30',
Mayur Kale08d09c42018-10-08 14:25:01 -0700212 dropwizard: "io.dropwizard.metrics:metrics-core:${dropwizardVersion}",
Bogdan Drutu00202c02017-03-21 10:52:28 -0700213 ]
214 }
215
Bogdan Drutu0eaaccb2018-01-23 19:38:02 -0800216 configurations {
217 compile {
218 // Detect Maven Enforcer's dependencyConvergence failures. We only
219 // care for artifacts used as libraries by others.
Bogdan Drutu13cf2b82018-02-26 15:24:26 -0800220 if (!(project.name in ['benchmarks', 'opencensus-all',
221 'opencensus-exporter-stats-stackdriver',
Bogdan Drutu1c416c02018-05-31 06:28:54 -0700222 'opencensus-exporter-trace-stackdriver',
223 'opencensus-exporter-trace-jaeger'])) {
Bogdan Drutu0eaaccb2018-01-23 19:38:02 -0800224 resolutionStrategy.failOnVersionConflict()
225 }
226 }
227 }
228
Bogdan Drutu00202c02017-03-21 10:52:28 -0700229 dependencies {
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800230 if (useCheckerFramework) {
sebright33fa6312018-09-06 12:07:06 -0700231 ext.checkerFrameworkVersion = '2.5.5'
Kristen Kozak3d3a4462018-04-16 15:50:56 -0700232
233 // 2.4.0 is the last version of the Checker Framework compiler that supports annotations
234 // in comments, though it should continue to work with newer versions of the Checker Framework.
235 // See
236 // https://github.com/census-instrumentation/opencensus-java/pull/1112#issuecomment-381366366.
237 ext.checkerFrameworkCompilerVersion = '2.4.0'
238
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800239 ext.jdkVersion = 'jdk8'
240 checkerFrameworkAnnotatedJDK "org.checkerframework:${jdkVersion}:${checkerFrameworkVersion}"
Kristen Kozak3d3a4462018-04-16 15:50:56 -0700241 checkerFrameworkJavac "org.checkerframework:compiler:${checkerFrameworkCompilerVersion}"
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800242 compileOnly "org.checkerframework:checker:${checkerFrameworkVersion}"
243 compile "org.checkerframework:checker-qual:${checkerFrameworkVersion}"
244 compileOnly libraries.auto_value
245 }
246
Kristen Kozak1bb75e52018-03-26 16:49:03 -0700247 compileOnly libraries.errorprone,
248 libraries.jsr305
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700249
Bogdan Drutu00202c02017-03-21 10:52:28 -0700250 testCompile libraries.guava_testlib,
251 libraries.junit,
252 libraries.mockito,
253 libraries.truth
254
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800255 if (useErrorProne && JavaVersion.current().isJava8Compatible()) {
Bogdan Drutub0e60502017-03-22 19:23:35 -0700256 // The ErrorProne plugin defaults to the latest, which would break our
257 // build if error prone releases a new version with a new check
Kristen Kozakba783792017-11-10 18:28:44 -0800258 errorprone "com.google.errorprone:error_prone_core:${errorProneVersion}"
Bogdan Drutub0e60502017-03-22 19:23:35 -0700259 }
Bogdan Drutu00202c02017-03-21 10:52:28 -0700260 }
261
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700262 findbugs {
Yang Song7a34c182018-07-26 09:32:03 -0700263 toolVersion = findBugsAnnotationsVersion
Bogdan Drutueba004c2017-04-13 13:52:39 -0700264 ignoreFailures = false // bug free or it doesn't ship!
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700265 effort = 'max'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700266 reportLevel = 'low' // low = sensitive to even minor mistakes
267 omitVisitors = [] // bugs that we want to ignore
Kristen Kozakb27b1c72017-04-12 16:38:04 -0700268 excludeFilter = file("$rootDir/findbugs-exclude.xml")
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700269 }
Bogdan Drutucca79a32017-03-27 14:17:16 -0700270 // Generate html report for findbugs.
271 findbugsMain {
272 reports {
273 xml.enabled = false
274 html.enabled = true
275 }
276 }
Bogdan Drutueabc8002018-08-28 14:40:27 -0700277 findbugsTest {
278 reports {
279 xml.enabled = false
280 html.enabled = true
281 }
282 }
Bogdan Drutuc0e0b222018-09-11 00:08:18 -0700283 findbugsJmh {
284 reports {
285 xml.enabled = false
286 html.enabled = true
287 }
288 }
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700289
Bogdan Drutu00202c02017-03-21 10:52:28 -0700290 checkstyle {
Bogdan Drutub216db32017-08-24 22:09:37 -0700291 configFile = file("$rootDir/buildscripts/checkstyle.xml")
sebright0a2f5792018-08-16 15:04:02 -0700292 toolVersion = "8.12"
Bogdan Drutu00202c02017-03-21 10:52:28 -0700293 ignoreFailures = false
294 if (rootProject.hasProperty("checkstyle.ignoreFailures")) {
295 ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean()
296 }
297 configProperties["rootDir"] = rootDir
298 }
299
Bogdan Drutub0e60502017-03-22 19:23:35 -0700300 // Disable checkstyle if no java8.
301 checkstyleMain.enabled = JavaVersion.current().isJava8Compatible()
302 checkstyleTest.enabled = JavaVersion.current().isJava8Compatible()
Bogdan Drutuc0e0b222018-09-11 00:08:18 -0700303 checkstyleJmh.enabled = JavaVersion.current().isJava8Compatible()
Bogdan Drutub0e60502017-03-22 19:23:35 -0700304
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100305 // Google formatter works only on java8.
306 if (JavaVersion.current().isJava8Compatible()) {
307 googleJavaFormat {
Bogdan Drutuaf3565c2018-07-19 13:47:30 -0400308 toolVersion '1.6'
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100309 }
310
Stefan Schmidtfe8b9902017-11-03 17:26:09 +0100311 afterEvaluate { // Allow subproject to add more source sets.
312 tasks.googleJavaFormat {
313 source = sourceSets*.allJava
314 include '**/*.java'
315 }
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100316
Stefan Schmidtfe8b9902017-11-03 17:26:09 +0100317 tasks.verifyGoogleJavaFormat {
318 source = sourceSets*.allJava
319 include '**/*.java'
320 }
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100321 }
322 }
323
Bogdan Drutueba004c2017-04-13 13:52:39 -0700324 signing {
325 required false
326 sign configurations.archives
327 }
328
329 task javadocJar(type: Jar) {
330 classifier = 'javadoc'
331 from javadoc
332 }
333
334 task sourcesJar(type: Jar) {
335 classifier = 'sources'
336 from sourceSets.main.allSource
337 }
338
339 artifacts {
340 archives javadocJar, sourcesJar
341 }
342
Bogdan Drutuc0e0b222018-09-11 00:08:18 -0700343 jmh {
344 jmhVersion = '1.20'
345 warmupIterations = 10
346 iterations = 10
347 fork = 1
348 failOnError = true
349 resultFormat = 'JSON'
350 // Allow to run single benchmark class like:
351 // ./gradlew -PjmhIncludeSingleClass=StatsTraceContextBenchmark clean :grpc-core:jmh
352 if (project.hasProperty('jmhIncludeSingleClass')) {
353 include = [
354 project.property('jmhIncludeSingleClass')
355 ]
356 }
357 }
358
359 jmhReport {
360 jmhResultPath = project.file("${project.buildDir}/reports/jmh/results.json")
361 jmhReportOutput = project.file("${project.buildDir}/reports/jmh")
362 }
363
364 tasks.jmh.finalizedBy tasks.jmhReport
365
Bogdan Drutueba004c2017-04-13 13:52:39 -0700366 uploadArchives {
367 repositories {
368 mavenDeployer {
369 beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
370
371 def configureAuth = {
372 if (rootProject.hasProperty('ossrhUsername') && rootProject.hasProperty('ossrhPassword')) {
373 authentication(userName:rootProject.ossrhUsername, password: rootProject.ossrhPassword)
374 }
375 }
376
377 repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/", configureAuth)
378
379 snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/", configureAuth)
380
381 pom.project {
Bogdan Drutu1d2eda62017-06-19 23:54:11 -0700382 name "OpenCensus"
Bogdan Drutueba004c2017-04-13 13:52:39 -0700383 packaging 'jar'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700384 description project.description
Bogdan Drutu95c9b202017-06-21 23:56:49 -0700385 url 'https://github.com/census-instrumentation/opencensus-java'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700386
387 scm {
Bogdan Drutu95c9b202017-06-21 23:56:49 -0700388 connection 'scm:svn:https://github.com/census-instrumentation/opencensus-java'
389 developerConnection 'scm:git:git@github.com/census-instrumentation/opencensus-java'
390 url 'https://github.com/census-instrumentation/opencensus-java'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700391 }
392
393 licenses {
394 license {
395 name 'The Apache License, Version 2.0'
396 url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
397 }
398 }
399
400 developers {
401 developer {
Bogdan Drutu1d2eda62017-06-19 23:54:11 -0700402 id 'io.opencensus'
403 name 'OpenCensus Contributors'
Bogdan Drutudca6c292017-10-27 14:09:23 -0700404 email 'census-developers@googlegroups.com'
Bogdan Drutu1d2eda62017-06-19 23:54:11 -0700405 url 'opencensus.io'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700406 // https://issues.gradle.org/browse/GRADLE-2719
Bogdan Drutu6c2b6752018-02-15 17:10:23 -0800407 organization = 'OpenCensus Authors'
408 organizationUrl 'https://www.opencensus.io'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700409 }
410 }
411 }
412 }
413 }
414 }
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100415
Stefan Schmidt973ee9b2017-08-24 22:34:33 +0200416 // Upload the following artifacts only:
417 uploadArchives.onlyIf {
418 name in ['opencensus-api',
419 'opencensus-contrib-agent',
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700420 'opencensus-contrib-appengine-standard-util',
Mayur Kale08d09c42018-10-08 14:25:01 -0700421 'opencensus-contrib-dropwizard',
Yang Song5f7a05e2018-07-12 11:16:35 -0700422 'opencensus-contrib-exemplar-util',
sebright5298e6c2017-10-27 10:43:00 -0700423 'opencensus-contrib-grpc-metrics',
Bogdan Drutu8781dbb2017-09-05 10:40:42 -0700424 'opencensus-contrib-grpc-util',
Bogdan Drutuc90bec72018-01-25 15:13:17 -0800425 'opencensus-contrib-http-util',
Kristen Kozak6b7ff222018-06-15 11:54:00 -0700426 'opencensus-contrib-log-correlation-stackdriver',
Yang Song86dadee2018-04-26 09:53:32 -0700427 'opencensus-contrib-monitored-resource-util',
savaki6e885b62018-07-13 21:23:51 -0700428 'opencensus-contrib-spring',
Bogdan Drutu20720ce2018-09-07 12:15:16 -0700429 'opencensus-contrib-spring-sleuth-v1x',
Bogdan Drutua8516962017-08-28 13:10:25 -0700430 'opencensus-contrib-zpages',
Yang Songb0d39672018-02-13 12:47:32 -0800431 'opencensus-exporter-stats-prometheus',
Maxime Petazzoni64d05832018-01-17 09:09:13 -0800432 'opencensus-exporter-stats-signalfx',
Yang Songb55bb812017-11-16 17:57:32 -0800433 'opencensus-exporter-stats-stackdriver',
Fabian Lange17a1a1a2018-02-09 14:33:30 -0500434 'opencensus-exporter-trace-instana',
Bogdan Drutua8516962017-08-28 13:10:25 -0700435 'opencensus-exporter-trace-logging',
Yang Songa36f7952018-09-24 15:27:45 -0700436 'opencensus-exporter-trace-ocagent',
Bogdan Drutua8516962017-08-28 13:10:25 -0700437 'opencensus-exporter-trace-stackdriver',
Bogdan Drutu0b4f14a2017-10-27 11:04:41 -0700438 'opencensus-exporter-trace-zipkin',
Marc Carré81908052018-03-16 01:03:49 +0000439 'opencensus-exporter-trace-jaeger',
Stefan Schmidt973ee9b2017-08-24 22:34:33 +0200440 'opencensus-impl-core',
441 'opencensus-impl-lite',
442 'opencensus-impl',
443 'opencensus-testing']
444 }
Bogdan Drutueba004c2017-04-13 13:52:39 -0700445
Bogdan Drutu00202c02017-03-21 10:52:28 -0700446 // At a test failure, log the stack trace to the console so that we don't
447 // have to open the HTML in a browser.
448 test {
449 testLogging {
450 exceptionFormat = 'full'
451 showExceptions true
452 showCauses true
453 showStackTraces true
454 }
455 maxHeapSize = '1500m'
456 }
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800457
458 if (useCheckerFramework) {
459 allprojects {
460 tasks.withType(JavaCompile).all { JavaCompile compile ->
461 compile.doFirst {
462 compile.options.compilerArgs += [
Kristen Kozak192d43a2018-03-27 12:28:55 -0700463 '-Xmaxerrs', '10000',
464 "-Xbootclasspath/p:${configurations.checkerFrameworkAnnotatedJDK.asPath}",
sebright8939d9f2018-08-01 16:34:05 -0700465 "-AskipDefs=\\.AutoValue_|^io.opencensus.contrib.appengine.standard.util.TraceIdProto\$|^io.opencensus.contrib.appengine.standard.util.TraceProto\$",
Kristen Kozakd45a9612018-04-04 13:50:40 -0700466 "-AinvariantArrays"
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800467 ]
468 options.fork = true
469 options.forkOptions.jvmArgs += ["-Xbootclasspath/p:${configurations.checkerFrameworkJavac.asPath}"]
470 }
471 }
472 }
473 }
Stefan Schmidt7d681cc2018-03-09 21:41:09 +0100474
475 // For projects that depend on gRPC during test execution, make sure to
476 // also configure ALPN if running on a platform (e.g. FreeBSD) that is not
477 // supported by io.netty:netty-tcnative-boringssl-static:jar. Also see:
478 // https://github.com/grpc/grpc-java/blob/master/SECURITY.md#tls-with-jdk-jetty-alpnnpn
479 if (project.name in ['opencensus-exporter-stats-stackdriver',
480 'opencensus-exporter-trace-stackdriver']) {
481 def os = org.gradle.internal.os.OperatingSystem.current()
482 if (!os.isLinux() && !os.isWindows() && !os.isMacOsX()) {
483 configurations {
484 alpn
485 }
486 dependencies {
487 alpn 'org.mortbay.jetty.alpn:jetty-alpn-agent:2.0.7'
488 }
489 test {
490 jvmArgs "-javaagent:${configurations.alpn.asPath}"
491 }
492 }
493 }
Bogdan Drutu00202c02017-03-21 10:52:28 -0700494}