blob: dcb006ce9b842713272d1265e39c9245a6b812b5 [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'
sebright831fd8d2018-09-06 13:12:52 -0700161 log4j2Version = '2.11.1'
Maxime Petazzoni64d05832018-01-17 09:09:13 -0800162 signalfxVersion = '0.0.39'
Dino Oliva30c10cc2018-09-05 12:09:44 -0700163 springBootVersion = '1.5.15.RELEASE'
164 springCloudVersion = '1.3.4.RELEASE'
savaki6e885b62018-07-13 21:23:51 -0700165 springVersion = '4.3.12.RELEASE'
Yang Songf30f8082018-05-30 10:35:04 -0700166 prometheusVersion = '0.4.0'
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700167 protobufVersion = '3.5.1'
Bogdan Drutu490dfe82018-02-15 20:15:39 -0800168 zipkinReporterVersion = '2.3.2'
Bogdan Drutu1c416c02018-05-31 06:28:54 -0700169 jaegerReporterVersion = '0.27.0'
Yang Songb2251bf2018-09-20 14:53:54 -0700170 opencensusProtoVersion = '0.0.2'
Mayur Kale08d09c42018-10-08 14:25:01 -0700171 dropwizardVersion = '3.1.2'
Bogdan Drutu00202c02017-03-21 10:52:28 -0700172
173 libraries = [
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700174 appengine_api: "com.google.appengine:appengine-api-1.0-sdk:${appengineVersion}",
savaki6e885b62018-07-13 21:23:51 -0700175 aspectj: "org.aspectj:aspectjrt:${aspectjVersion}",
Bogdan Drutu31b3fdd2017-08-16 18:57:26 -0700176 auto_value: "com.google.auto.value:auto-value:${autoValueVersion}",
177 auto_service: 'com.google.auto.service:auto-service:1.0-rc3',
Stefan Schmidtee1fd022018-03-05 20:39:48 +0100178 byte_buddy: 'net.bytebuddy:byte-buddy:1.7.11',
Stefan Schmidtcdd4ce22017-11-20 20:59:30 +0100179 config: 'com.typesafe:config:1.2.1',
Yang Song37fe5d32018-03-21 14:52:11 -0700180 disruptor: 'com.lmax:disruptor:3.4.1',
Kristen Kozakba783792017-11-10 18:28:44 -0800181 errorprone: "com.google.errorprone:error_prone_annotations:${errorProneVersion}",
Yang Song7a34c182018-07-26 09:32:03 -0700182 findbugs_annotations: "com.google.code.findbugs:annotations:${findBugsAnnotationsVersion}",
Bogdan Drutu61178e92017-09-20 09:41:37 -0700183 google_auth: "com.google.auth:google-auth-library-credentials:${googleAuthVersion}",
Yang Songdd7234b2018-06-20 14:47:56 -0700184 google_cloud_logging: "com.google.cloud:google-cloud-logging:${googleCloudGaVersion}",
185 google_cloud_trace: "com.google.cloud:google-cloud-trace:${googleCloudBetaVersion}",
sebright831fd8d2018-09-06 13:12:52 -0700186 log4j2: "org.apache.logging.log4j:log4j-core:${log4j2Version}",
Adrian Coled05056c2017-09-24 10:46:17 +0800187 zipkin_reporter: "io.zipkin.reporter2:zipkin-reporter:${zipkinReporterVersion}",
188 zipkin_urlconnection: "io.zipkin.reporter2:zipkin-sender-urlconnection:${zipkinReporterVersion}",
Marc Carré81908052018-03-16 01:03:49 +0000189 jaeger_reporter: "com.uber.jaeger:jaeger-core:${jaegerReporterVersion}",
Yang Songdd7234b2018-06-20 14:47:56 -0700190 google_cloud_monitoring: "com.google.cloud:google-cloud-monitoring:${googleCloudGaVersion}",
Bogdan Drutu8781dbb2017-09-05 10:40:42 -0700191 grpc_context: "io.grpc:grpc-context:${grpcVersion}",
192 grpc_core: "io.grpc:grpc-core:${grpcVersion}",
Yang Songdea86ae2018-10-08 19:10:20 -0700193 grpc_netty: "io.grpc:grpc-netty:${grpcVersion}",
194 grpc_stub: "io.grpc:grpc-stub:${grpcVersion}",
Bogdan Drutu31b3fdd2017-08-16 18:57:26 -0700195 guava: "com.google.guava:guava:${guavaVersion}",
Yang Song7a34c182018-07-26 09:32:03 -0700196 jsr305: "com.google.code.findbugs:jsr305:${findBugsJsr305Version}",
Maxime Petazzoni64d05832018-01-17 09:09:13 -0800197 signalfx_java: "com.signalfx.public:signalfx-java:${signalfxVersion}",
savaki6e885b62018-07-13 21:23:51 -0700198 spring_aspects: "org.springframework:spring-aspects:${springVersion}",
Dino Oliva30c10cc2018-09-05 12:09:44 -0700199 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}",
savaki6e885b62018-07-13 21:23:51 -0700202 spring_context: "org.springframework:spring-context:${springVersion}",
203 spring_context_support: "org.springframework:spring-context-support:${springVersion}",
Yang Songb0d39672018-02-13 12:47:32 -0800204 prometheus_simpleclient: "io.prometheus:simpleclient:${prometheusVersion}",
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700205 protobuf: "com.google.protobuf:protobuf-java:${protobufVersion}",
Yang Songb2251bf2018-09-20 14:53:54 -0700206 opencensus_proto: "io.opencensus:opencensus-proto:${opencensusProtoVersion}",
Bogdan Drutu00202c02017-03-21 10:52:28 -0700207
208 // Test dependencies.
Bogdan Drutu31b3fdd2017-08-16 18:57:26 -0700209 guava_testlib: "com.google.guava:guava-testlib:${guavaVersion}",
Bogdan Drutubbe1d0f2017-10-26 14:05:26 -0700210 junit: 'junit:junit:4.12',
Kristen Kozak23be8f02017-11-10 15:01:23 -0800211 mockito: 'org.mockito:mockito-core:1.9.5',
savaki11f40292018-07-18 05:37:54 -0700212 spring_test: "org.springframework:spring-test:${springVersion}",
Bogdan Drutu31b3fdd2017-08-16 18:57:26 -0700213 truth: 'com.google.truth:truth:0.30',
Mayur Kale08d09c42018-10-08 14:25:01 -0700214 dropwizard: "io.dropwizard.metrics:metrics-core:${dropwizardVersion}",
Bogdan Drutu00202c02017-03-21 10:52:28 -0700215 ]
216 }
217
Bogdan Drutu0eaaccb2018-01-23 19:38:02 -0800218 configurations {
219 compile {
220 // Detect Maven Enforcer's dependencyConvergence failures. We only
221 // care for artifacts used as libraries by others.
Bogdan Drutu13cf2b82018-02-26 15:24:26 -0800222 if (!(project.name in ['benchmarks', 'opencensus-all',
223 'opencensus-exporter-stats-stackdriver',
Bogdan Drutu1c416c02018-05-31 06:28:54 -0700224 'opencensus-exporter-trace-stackdriver',
225 'opencensus-exporter-trace-jaeger'])) {
Bogdan Drutu0eaaccb2018-01-23 19:38:02 -0800226 resolutionStrategy.failOnVersionConflict()
227 }
228 }
229 }
230
Bogdan Drutu00202c02017-03-21 10:52:28 -0700231 dependencies {
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800232 if (useCheckerFramework) {
sebright33fa6312018-09-06 12:07:06 -0700233 ext.checkerFrameworkVersion = '2.5.5'
Kristen Kozak3d3a4462018-04-16 15:50:56 -0700234
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 Kozaka5f4a102017-12-19 20:02:00 -0800241 ext.jdkVersion = 'jdk8'
242 checkerFrameworkAnnotatedJDK "org.checkerframework:${jdkVersion}:${checkerFrameworkVersion}"
Kristen Kozak3d3a4462018-04-16 15:50:56 -0700243 checkerFrameworkJavac "org.checkerframework:compiler:${checkerFrameworkCompilerVersion}"
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800244 compileOnly "org.checkerframework:checker:${checkerFrameworkVersion}"
245 compile "org.checkerframework:checker-qual:${checkerFrameworkVersion}"
246 compileOnly libraries.auto_value
247 }
248
Kristen Kozak1bb75e52018-03-26 16:49:03 -0700249 compileOnly libraries.errorprone,
250 libraries.jsr305
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700251
Bogdan Drutu00202c02017-03-21 10:52:28 -0700252 testCompile libraries.guava_testlib,
253 libraries.junit,
254 libraries.mockito,
255 libraries.truth
256
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800257 if (useErrorProne && JavaVersion.current().isJava8Compatible()) {
Bogdan Drutub0e60502017-03-22 19:23:35 -0700258 // 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 Kozakba783792017-11-10 18:28:44 -0800260 errorprone "com.google.errorprone:error_prone_core:${errorProneVersion}"
Bogdan Drutub0e60502017-03-22 19:23:35 -0700261 }
Bogdan Drutu00202c02017-03-21 10:52:28 -0700262 }
263
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700264 findbugs {
Yang Song7a34c182018-07-26 09:32:03 -0700265 toolVersion = findBugsAnnotationsVersion
Bogdan Drutueba004c2017-04-13 13:52:39 -0700266 ignoreFailures = false // bug free or it doesn't ship!
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700267 effort = 'max'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700268 reportLevel = 'low' // low = sensitive to even minor mistakes
269 omitVisitors = [] // bugs that we want to ignore
Kristen Kozakb27b1c72017-04-12 16:38:04 -0700270 excludeFilter = file("$rootDir/findbugs-exclude.xml")
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700271 }
Bogdan Drutucca79a32017-03-27 14:17:16 -0700272 // Generate html report for findbugs.
273 findbugsMain {
274 reports {
275 xml.enabled = false
276 html.enabled = true
277 }
278 }
Bogdan Drutueabc8002018-08-28 14:40:27 -0700279 findbugsTest {
280 reports {
281 xml.enabled = false
282 html.enabled = true
283 }
284 }
Bogdan Drutuc0e0b222018-09-11 00:08:18 -0700285 findbugsJmh {
286 reports {
287 xml.enabled = false
288 html.enabled = true
289 }
290 }
Bogdan Drutu07f0dd22017-03-22 08:54:53 -0700291
Bogdan Drutu00202c02017-03-21 10:52:28 -0700292 checkstyle {
Bogdan Drutub216db32017-08-24 22:09:37 -0700293 configFile = file("$rootDir/buildscripts/checkstyle.xml")
sebright0a2f5792018-08-16 15:04:02 -0700294 toolVersion = "8.12"
Bogdan Drutu00202c02017-03-21 10:52:28 -0700295 ignoreFailures = false
296 if (rootProject.hasProperty("checkstyle.ignoreFailures")) {
297 ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean()
298 }
299 configProperties["rootDir"] = rootDir
300 }
301
Bogdan Drutub0e60502017-03-22 19:23:35 -0700302 // Disable checkstyle if no java8.
303 checkstyleMain.enabled = JavaVersion.current().isJava8Compatible()
304 checkstyleTest.enabled = JavaVersion.current().isJava8Compatible()
Bogdan Drutuc0e0b222018-09-11 00:08:18 -0700305 checkstyleJmh.enabled = JavaVersion.current().isJava8Compatible()
Bogdan Drutub0e60502017-03-22 19:23:35 -0700306
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100307 // Google formatter works only on java8.
308 if (JavaVersion.current().isJava8Compatible()) {
309 googleJavaFormat {
Bogdan Drutuaf3565c2018-07-19 13:47:30 -0400310 toolVersion '1.6'
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100311 }
312
Stefan Schmidtfe8b9902017-11-03 17:26:09 +0100313 afterEvaluate { // Allow subproject to add more source sets.
314 tasks.googleJavaFormat {
315 source = sourceSets*.allJava
316 include '**/*.java'
317 }
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100318
Stefan Schmidtfe8b9902017-11-03 17:26:09 +0100319 tasks.verifyGoogleJavaFormat {
320 source = sourceSets*.allJava
321 include '**/*.java'
322 }
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100323 }
324 }
325
Bogdan Drutueba004c2017-04-13 13:52:39 -0700326 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 Drutuc0e0b222018-09-11 00:08:18 -0700345 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 Drutueba004c2017-04-13 13:52:39 -0700368 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 Drutu1d2eda62017-06-19 23:54:11 -0700384 name "OpenCensus"
Bogdan Drutueba004c2017-04-13 13:52:39 -0700385 packaging 'jar'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700386 description project.description
Bogdan Drutu95c9b202017-06-21 23:56:49 -0700387 url 'https://github.com/census-instrumentation/opencensus-java'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700388
389 scm {
Bogdan Drutu95c9b202017-06-21 23:56:49 -0700390 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 Drutueba004c2017-04-13 13:52:39 -0700393 }
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 Drutu1d2eda62017-06-19 23:54:11 -0700404 id 'io.opencensus'
405 name 'OpenCensus Contributors'
Bogdan Drutudca6c292017-10-27 14:09:23 -0700406 email 'census-developers@googlegroups.com'
Bogdan Drutu1d2eda62017-06-19 23:54:11 -0700407 url 'opencensus.io'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700408 // https://issues.gradle.org/browse/GRADLE-2719
Bogdan Drutu6c2b6752018-02-15 17:10:23 -0800409 organization = 'OpenCensus Authors'
410 organizationUrl 'https://www.opencensus.io'
Bogdan Drutueba004c2017-04-13 13:52:39 -0700411 }
412 }
413 }
414 }
415 }
416 }
Bogdan Drutu6cb4dd22017-11-03 09:25:12 +1100417
Stefan Schmidt973ee9b2017-08-24 22:34:33 +0200418 // Upload the following artifacts only:
419 uploadArchives.onlyIf {
420 name in ['opencensus-api',
421 'opencensus-contrib-agent',
Bogdan Drutu709d97a2018-05-30 16:32:34 -0700422 'opencensus-contrib-appengine-standard-util',
Mayur Kale08d09c42018-10-08 14:25:01 -0700423 'opencensus-contrib-dropwizard',
Yang Song5f7a05e2018-07-12 11:16:35 -0700424 'opencensus-contrib-exemplar-util',
sebright5298e6c2017-10-27 10:43:00 -0700425 'opencensus-contrib-grpc-metrics',
Bogdan Drutu8781dbb2017-09-05 10:40:42 -0700426 'opencensus-contrib-grpc-util',
Bogdan Drutuc90bec72018-01-25 15:13:17 -0800427 'opencensus-contrib-http-util',
sebright93ee8f42018-09-14 11:34:05 -0700428 'opencensus-contrib-log-correlation-log4j2',
Kristen Kozak6b7ff222018-06-15 11:54:00 -0700429 'opencensus-contrib-log-correlation-stackdriver',
Yang Song86dadee2018-04-26 09:53:32 -0700430 'opencensus-contrib-monitored-resource-util',
savaki6e885b62018-07-13 21:23:51 -0700431 'opencensus-contrib-spring',
Bogdan Drutu20720ce2018-09-07 12:15:16 -0700432 'opencensus-contrib-spring-sleuth-v1x',
Bogdan Drutua8516962017-08-28 13:10:25 -0700433 'opencensus-contrib-zpages',
Yang Songb0d39672018-02-13 12:47:32 -0800434 'opencensus-exporter-stats-prometheus',
Maxime Petazzoni64d05832018-01-17 09:09:13 -0800435 'opencensus-exporter-stats-signalfx',
Yang Songb55bb812017-11-16 17:57:32 -0800436 'opencensus-exporter-stats-stackdriver',
Fabian Lange17a1a1a2018-02-09 14:33:30 -0500437 'opencensus-exporter-trace-instana',
Bogdan Drutua8516962017-08-28 13:10:25 -0700438 'opencensus-exporter-trace-logging',
Yang Songa36f7952018-09-24 15:27:45 -0700439 'opencensus-exporter-trace-ocagent',
Bogdan Drutua8516962017-08-28 13:10:25 -0700440 'opencensus-exporter-trace-stackdriver',
Bogdan Drutu0b4f14a2017-10-27 11:04:41 -0700441 'opencensus-exporter-trace-zipkin',
Marc Carré81908052018-03-16 01:03:49 +0000442 'opencensus-exporter-trace-jaeger',
Stefan Schmidt973ee9b2017-08-24 22:34:33 +0200443 'opencensus-impl-core',
444 'opencensus-impl-lite',
445 'opencensus-impl',
446 'opencensus-testing']
447 }
Bogdan Drutueba004c2017-04-13 13:52:39 -0700448
Bogdan Drutu00202c02017-03-21 10:52:28 -0700449 // 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 Kozaka5f4a102017-12-19 20:02:00 -0800460
461 if (useCheckerFramework) {
462 allprojects {
463 tasks.withType(JavaCompile).all { JavaCompile compile ->
464 compile.doFirst {
465 compile.options.compilerArgs += [
Kristen Kozak192d43a2018-03-27 12:28:55 -0700466 '-Xmaxerrs', '10000',
467 "-Xbootclasspath/p:${configurations.checkerFrameworkAnnotatedJDK.asPath}",
sebright8939d9f2018-08-01 16:34:05 -0700468 "-AskipDefs=\\.AutoValue_|^io.opencensus.contrib.appengine.standard.util.TraceIdProto\$|^io.opencensus.contrib.appengine.standard.util.TraceProto\$",
Kristen Kozakd45a9612018-04-04 13:50:40 -0700469 "-AinvariantArrays"
Kristen Kozaka5f4a102017-12-19 20:02:00 -0800470 ]
471 options.fork = true
472 options.forkOptions.jvmArgs += ["-Xbootclasspath/p:${configurations.checkerFrameworkJavac.asPath}"]
473 }
474 }
475 }
476 }
Stefan Schmidt7d681cc2018-03-09 21:41:09 +0100477
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 Drutu00202c02017-03-21 10:52:28 -0700497}