| buildscript { | |
| repositories { | |
| mavenCentral() | |
| mavenLocal() | |
| maven { | |
| url "https://plugins.gradle.org/m2/" | |
| } | |
| } | |
| dependencies { | |
| classpath 'ru.vyarus:gradle-animalsniffer-plugin:1.4.6' | |
| classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE") | |
| classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.16' | |
| classpath "net.ltgt.gradle:gradle-apt-plugin:0.18" | |
| classpath 'com.github.ben-manes:gradle-versions-plugin:0.20.0' | |
| classpath "gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.8" | |
| classpath "me.champeau.gradle:jmh-gradle-plugin:0.4.8" | |
| classpath "gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.9.0" | |
| } | |
| } | |
| // Display the version report using: ./gradlew dependencyUpdates | |
| // Also see https://github.com/ben-manes/gradle-versions-plugin. | |
| apply plugin: 'com.github.ben-manes.versions' | |
| subprojects { | |
| // OC-Agent exporter depends on grpc-core which depends on errorprone annotations, and it | |
| // doesn't work with checker framework. | |
| def projectsDependOnGrpcCore = ["opencensus-exporter-metrics-ocagent", "opencensus-exporter-trace-ocagent"] | |
| // Don't use the Checker Framework by default, since it interferes with Error Prone. | |
| def useCheckerFramework = rootProject.hasProperty('checkerFramework') && !(project.name in projectsDependOnGrpcCore) | |
| def useErrorProne = !useCheckerFramework | |
| apply plugin: "checkstyle" | |
| apply plugin: 'maven' | |
| apply plugin: 'idea' | |
| apply plugin: 'eclipse' | |
| apply plugin: 'java' | |
| apply plugin: "signing" | |
| apply plugin: "jacoco" | |
| // The plugin only has an effect if a signature is specified | |
| apply plugin: 'ru.vyarus.animalsniffer' | |
| apply plugin: 'findbugs' | |
| apply plugin: 'net.ltgt.apt' | |
| apply plugin: 'net.ltgt.apt-idea' | |
| apply plugin: "me.champeau.gradle.jmh" | |
| apply plugin: "io.morethan.jmhreport" | |
| apply plugin: 'com.github.sherter.google-java-format' | |
| if (useErrorProne) { | |
| apply plugin: "net.ltgt.errorprone" | |
| } | |
| group = "io.opencensus" | |
| version = "0.32.0-SNAPSHOT" // CURRENT_OPENCENSUS_VERSION | |
| sourceCompatibility = 1.7 | |
| targetCompatibility = 1.7 | |
| repositories { | |
| mavenCentral() | |
| mavenLocal() | |
| } | |
| if (useCheckerFramework) { | |
| configurations { | |
| checkerFrameworkJavac { | |
| description = 'a customization of the Open JDK javac compiler with additional support for type annotations' | |
| } | |
| checkerFrameworkAnnotatedJDK { | |
| description = 'a copy of JDK classes with Checker Framework type qualifiers inserted' | |
| } | |
| } | |
| } | |
| [compileJava, compileTestJava, compileJmhJava].each() { | |
| // We suppress the "try" warning because it disallows managing an auto-closeable with | |
| // try-with-resources without referencing the auto-closeable within the try block. | |
| // We suppress the "processing" warning as suggested in | |
| // https://groups.google.com/forum/#!topic/bazel-discuss/_R3A9TJSoPM | |
| it.options.compilerArgs += ["-Xlint:all", "-Xlint:-try", "-Xlint:-processing"] | |
| if (useErrorProne) { | |
| it.options.compilerArgs += ["-XepAllDisabledChecksAsWarnings", "-XepDisableWarningsInGeneratedCode"] | |
| // -XepDisableWarningsInGeneratedCode doesn't suppress all warnings in generated | |
| // protocol buffer code. | |
| it.options.compilerArgs += ["-XepExcludedPaths:.*/gen_gradle/.*"] | |
| // MutableMethodReturnType can suggest returning Guava types from | |
| // API methods (https://github.com/google/error-prone/issues/982). | |
| it.options.compilerArgs += ["-Xep:MutableMethodReturnType:OFF"] | |
| // ReturnMissingNullable conflicts with Checker Framework null analysis. | |
| it.options.compilerArgs += ["-Xep:ReturnMissingNullable:OFF"] | |
| // OpenCensus doesn't currently use Var annotations. | |
| it.options.compilerArgs += ["-Xep:Var:OFF"] | |
| // ImmutableRefactoring suggests using com.google.errorprone.annotations.Immutable, | |
| // but OpenCensus currently uses javax.annotation.concurrent.Immutable | |
| it.options.compilerArgs += ["-Xep:ImmutableRefactoring:OFF"] | |
| // This check causes a NullPointerException | |
| // (https://github.com/google/error-prone/issues/1138). | |
| it.options.compilerArgs += ["-Xep:NullableDereference:OFF"] | |
| // ExpectedExceptionRefactoring and TestExceptionRefactoring suggest using | |
| // assertThrows, but assertThrows only works well with lambdas. | |
| it.options.compilerArgs += ["-Xep:ExpectedExceptionRefactoring:OFF"] | |
| it.options.compilerArgs += ["-Xep:TestExceptionRefactoring:OFF"] | |
| } | |
| if (useCheckerFramework) { | |
| it.options.compilerArgs += [ | |
| '-processor', | |
| 'com.google.auto.value.processor.AutoValueProcessor,org.checkerframework.checker.nullness.NullnessChecker', | |
| "-Astubs=$rootDir/checker-framework/stubs" | |
| ] | |
| } | |
| it.options.encoding = "UTF-8" | |
| // Protobuf-generated code produces some warnings. | |
| // https://github.com/google/protobuf/issues/2718 | |
| it.options.compilerArgs += ["-Xlint:-cast"] | |
| if (!JavaVersion.current().isJava9() && !useErrorProne) { | |
| // TODO(sebright): Enable -Werror for Java 9 once we upgrade AutoValue (issue #1017). | |
| it.options.compilerArgs += ["-Werror"] | |
| } | |
| if (JavaVersion.current().isJava9()) { | |
| // TODO(sebright): Currently, building with Java 9 produces the following "options" warnings: | |
| // | |
| // :opencensus-api:compileJavawarning: [options] bootstrap class path not set in conjunction with -source 1.6 | |
| // warning: [options] source value 1.6 is obsolete and will be removed in a future release | |
| // warning: [options] target value 1.6 is obsolete and will be removed in a future release | |
| it.options.compilerArgs += ["-Xlint:-options"] | |
| } | |
| } | |
| compileTestJava { | |
| // serialVersionUID is basically guaranteed to be useless in tests | |
| options.compilerArgs += ["-Xlint:-serial"] | |
| // It undeprecates DoubleSubject.isEqualTo(Double). | |
| options.compilerArgs += ["-Xlint:-deprecation"] | |
| } | |
| jar.manifest { | |
| attributes('Implementation-Title': name, | |
| 'Implementation-Version': version, | |
| 'Built-By': System.getProperty('user.name'), | |
| 'Built-JDK': System.getProperty('java.version'), | |
| 'Source-Compatibility': sourceCompatibility, | |
| 'Target-Compatibility': targetCompatibility) | |
| } | |
| javadoc.options { | |
| encoding = 'UTF-8' | |
| links 'https://docs.oracle.com/javase/8/docs/api/' | |
| } | |
| ext { | |
| appengineVersion = '1.9.71' | |
| aspectjVersion = '1.8.11' | |
| autoValueVersion = '1.4' | |
| findBugsAnnotationsVersion = '3.0.1' | |
| findBugsJsr305Version = '3.0.2' | |
| errorProneVersion = '2.3.2' | |
| grpcVersion = '1.27.2' | |
| guavaVersion = '29.0-android' | |
| googleAuthVersion = '0.20.0' | |
| googleCloudBetaVersion = '0.100.0-beta' | |
| googleCloudGaVersion = '1.82.0' | |
| signalfxVersion = '0.0.48' | |
| springBoot2Version = '2.1.5.RELEASE' | |
| springBootVersion = '1.5.15.RELEASE' | |
| springBootTestVersion = '2.1.1.RELEASE' | |
| springCloudVersion = '1.3.4.RELEASE' | |
| springVersion = '4.3.12.RELEASE' | |
| prometheusVersion = '0.6.0' | |
| protobufVersion = '3.11.4' | |
| zipkinReporterVersion = '2.7.14' | |
| jaegerReporterVersion = '0.33.1' | |
| opencensusProtoVersion = '0.2.0' | |
| gsonVersion = '2.8.6' | |
| dropwizardVersion = '3.1.2' | |
| dropwizard5Version = '5.0.0' | |
| javaxServletVersion = "3.1.0" | |
| httpcomponentsVersion = "4.5.8" | |
| libraries = [ | |
| appengine_api: "com.google.appengine:appengine-api-1.0-sdk:${appengineVersion}", | |
| aspectj: "org.aspectj:aspectjrt:${aspectjVersion}", | |
| auto_value: "com.google.auto.value:auto-value:${autoValueVersion}", | |
| auto_service: 'com.google.auto.service:auto-service:1.0-rc3', | |
| byte_buddy: 'net.bytebuddy:byte-buddy:1.8.22', | |
| config: 'com.typesafe:config:1.2.1', | |
| disruptor: 'com.lmax:disruptor:3.4.2', | |
| errorprone: "com.google.errorprone:error_prone_annotations:${errorProneVersion}", | |
| findbugs_annotations: "com.google.code.findbugs:annotations:${findBugsAnnotationsVersion}", | |
| google_auth: "com.google.auth:google-auth-library-credentials:${googleAuthVersion}", | |
| google_cloud_logging: "com.google.cloud:google-cloud-logging:${googleCloudGaVersion}", | |
| google_cloud_trace: "com.google.cloud:google-cloud-trace:${googleCloudBetaVersion}", | |
| zipkin_reporter: "io.zipkin.reporter2:zipkin-reporter:${zipkinReporterVersion}", | |
| zipkin_urlconnection: "io.zipkin.reporter2:zipkin-sender-urlconnection:${zipkinReporterVersion}", | |
| jaeger_reporter: "io.jaegertracing:jaeger-client:${jaegerReporterVersion}", | |
| google_cloud_monitoring: "com.google.cloud:google-cloud-monitoring:${googleCloudGaVersion}", | |
| grpc_auth: "io.grpc:grpc-auth:${grpcVersion}", | |
| grpc_context: "io.grpc:grpc-context:${grpcVersion}", | |
| grpc_core: "io.grpc:grpc-core:${grpcVersion}", | |
| grpc_netty: "io.grpc:grpc-netty:${grpcVersion}", | |
| grpc_netty_shaded: "io.grpc:grpc-netty-shaded:${grpcVersion}", | |
| grpc_stub: "io.grpc:grpc-stub:${grpcVersion}", | |
| guava: "com.google.guava:guava:${guavaVersion}", | |
| jsr305: "com.google.code.findbugs:jsr305:${findBugsJsr305Version}", | |
| signalfx_java: "com.signalfx.public:signalfx-java:${signalfxVersion}", | |
| spring_aspects: "org.springframework:spring-aspects:${springVersion}", | |
| spring_boot_starter_web: "org.springframework.boot:spring-boot-starter-web:${springBootVersion}", | |
| spring_boot_starter_web2: "org.springframework.boot:spring-boot-starter-web:${springBoot2Version}", | |
| spring_cloud_build: "org.springframework.cloud:spring-cloud-build:${springCloudVersion}", | |
| spring_cloud_starter_sleuth: "org.springframework.cloud:spring-cloud-starter-sleuth:${springCloudVersion}", | |
| spring_context: "org.springframework:spring-context:${springVersion}", | |
| spring_context_support: "org.springframework:spring-context-support:${springVersion}", | |
| prometheus_simpleclient: "io.prometheus:simpleclient:${prometheusVersion}", | |
| protobuf: "com.google.protobuf:protobuf-java:${protobufVersion}", | |
| opencensus_proto: "io.opencensus:opencensus-proto:${opencensusProtoVersion}", | |
| gson: "com.google.code.gson:gson:${gsonVersion}", | |
| httpcomponents: "org.apache.httpcomponents:httpclient:${httpcomponentsVersion}", | |
| // Test dependencies. | |
| guava_testlib: "com.google.guava:guava-testlib:${guavaVersion}", | |
| junit: 'junit:junit:4.12', | |
| mockito: 'org.mockito:mockito-core:2.28.1', | |
| spring_test: "org.springframework:spring-test:${springVersion}", | |
| truth: 'com.google.truth:truth:1.0', | |
| spring_boot_test: "org.springframework.boot:spring-boot-starter-test:${springBootTestVersion}", | |
| spring_boot_test2: "org.springframework.boot:spring-boot-starter-test:${springBoot2Version}", | |
| dropwizard: "io.dropwizard.metrics:metrics-core:${dropwizardVersion}", | |
| dropwizard5: "io.dropwizard.metrics5:metrics-core:${dropwizard5Version}", | |
| sprint_boot_starter_tomcat: "org.springframework.boot:spring-boot-starter-tomcat:${springBoot2Version}", | |
| javax_servlet: "javax.servlet:javax.servlet-api:${javaxServletVersion}", | |
| ] | |
| } | |
| configurations { | |
| compile { | |
| // Detect Maven Enforcer's dependencyConvergence failures. We only | |
| // care for artifacts used as libraries by others. | |
| if (!(project.name in ['benchmarks', 'opencensus-all'])) { | |
| resolutionStrategy.failOnVersionConflict() | |
| } | |
| } | |
| } | |
| dependencies { | |
| if (useCheckerFramework) { | |
| ext.checkerFrameworkVersion = '2.10.1' | |
| // 2.4.0 is the last version of the Checker Framework compiler that supports annotations | |
| // in comments, though it should continue to work with newer versions of the Checker Framework. | |
| // See | |
| // https://github.com/census-instrumentation/opencensus-java/pull/1112#issuecomment-381366366. | |
| ext.checkerFrameworkCompilerVersion = '2.4.0' | |
| ext.jdkVersion = 'jdk8' | |
| checkerFrameworkAnnotatedJDK "org.checkerframework:${jdkVersion}:${checkerFrameworkVersion}" | |
| checkerFrameworkJavac "org.checkerframework:compiler:${checkerFrameworkCompilerVersion}" | |
| compileOnly "org.checkerframework:checker:${checkerFrameworkVersion}" | |
| compile "org.checkerframework:checker-qual:${checkerFrameworkVersion}" | |
| compileOnly libraries.auto_value | |
| } | |
| compileOnly libraries.errorprone, | |
| libraries.jsr305 | |
| testCompile libraries.guava_testlib, | |
| libraries.junit, | |
| libraries.mockito, | |
| libraries.truth | |
| if (useErrorProne) { | |
| // The ErrorProne plugin defaults to the latest, which would break our | |
| // build if error prone releases a new version with a new check | |
| errorprone "com.google.errorprone:error_prone_core:${errorProneVersion}" | |
| } | |
| } | |
| findbugs { | |
| toolVersion = findBugsAnnotationsVersion | |
| ignoreFailures = false // bug free or it doesn't ship! | |
| effort = 'max' | |
| reportLevel = 'low' // low = sensitive to even minor mistakes | |
| omitVisitors = [] // bugs that we want to ignore | |
| excludeFilter = file("$rootDir/findbugs-exclude.xml") | |
| } | |
| // Generate html report for findbugs. | |
| findbugsMain { | |
| reports { | |
| xml.enabled = false | |
| html.enabled = true | |
| } | |
| } | |
| findbugsTest { | |
| reports { | |
| xml.enabled = false | |
| html.enabled = true | |
| } | |
| } | |
| findbugsJmh { | |
| reports { | |
| xml.enabled = false | |
| html.enabled = true | |
| } | |
| } | |
| checkstyle { | |
| configFile = file("$rootDir/buildscripts/checkstyle.xml") | |
| toolVersion = "8.12" | |
| ignoreFailures = false | |
| if (rootProject.hasProperty("checkstyle.ignoreFailures")) { | |
| ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean() | |
| } | |
| configProperties["rootDir"] = rootDir | |
| } | |
| googleJavaFormat { | |
| toolVersion '1.7' | |
| } | |
| afterEvaluate { // Allow subproject to add more source sets. | |
| tasks.googleJavaFormat { | |
| source = sourceSets*.allJava | |
| include '**/*.java' | |
| } | |
| tasks.verifyGoogleJavaFormat { | |
| source = sourceSets*.allJava | |
| include '**/*.java' | |
| } | |
| } | |
| signing { | |
| required false | |
| if (rootProject.hasProperty('signingUseGpgCmd')) { | |
| useGpgCmd() | |
| } | |
| sign configurations.archives | |
| } | |
| task javadocJar(type: Jar) { | |
| classifier = 'javadoc' | |
| from javadoc | |
| } | |
| task sourcesJar(type: Jar) { | |
| classifier = 'sources' | |
| from sourceSets.main.allSource | |
| } | |
| artifacts { | |
| archives javadocJar, sourcesJar | |
| } | |
| jmh { | |
| jmhVersion = '1.20' | |
| warmupIterations = 10 | |
| iterations = 10 | |
| fork = 1 | |
| failOnError = true | |
| resultFormat = 'JSON' | |
| // Allow to run single benchmark class like: | |
| // ./gradlew -PjmhIncludeSingleClass=StatsTraceContextBenchmark clean :grpc-core:jmh | |
| if (project.hasProperty('jmhIncludeSingleClass')) { | |
| include = [ | |
| project.property('jmhIncludeSingleClass') | |
| ] | |
| } | |
| } | |
| jmhReport { | |
| jmhResultPath = project.file("${project.buildDir}/reports/jmh/results.json") | |
| jmhReportOutput = project.file("${project.buildDir}/reports/jmh") | |
| } | |
| tasks.jmh.finalizedBy tasks.jmhReport | |
| uploadArchives { | |
| repositories { | |
| mavenDeployer { | |
| beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } | |
| def configureAuth = { | |
| if (rootProject.hasProperty('ossrhUsername') && rootProject.hasProperty('ossrhPassword')) { | |
| authentication(userName:rootProject.ossrhUsername, password: rootProject.ossrhPassword) | |
| } | |
| } | |
| repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/", configureAuth) | |
| snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/", configureAuth) | |
| pom.project { | |
| name "OpenCensus" | |
| packaging 'jar' | |
| description project.description | |
| url 'https://github.com/census-instrumentation/opencensus-java' | |
| scm { | |
| connection 'scm:svn:https://github.com/census-instrumentation/opencensus-java' | |
| developerConnection 'scm:git:git@github.com/census-instrumentation/opencensus-java' | |
| url 'https://github.com/census-instrumentation/opencensus-java' | |
| } | |
| licenses { | |
| license { | |
| name 'The Apache License, Version 2.0' | |
| url 'http://www.apache.org/licenses/LICENSE-2.0.txt' | |
| } | |
| } | |
| developers { | |
| developer { | |
| id 'io.opencensus' | |
| name 'OpenCensus Contributors' | |
| email 'census-developers@googlegroups.com' | |
| url 'opencensus.io' | |
| // https://issues.gradle.org/browse/GRADLE-2719 | |
| organization = 'OpenCensus Authors' | |
| organizationUrl 'https://www.opencensus.io' | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| // Upload the following artifacts only: | |
| uploadArchives.onlyIf { | |
| name in ['opencensus-api', | |
| 'opencensus-contrib-agent', | |
| 'opencensus-contrib-appengine-standard-util', | |
| 'opencensus-contrib-dropwizard', | |
| 'opencensus-contrib-dropwizard5', | |
| 'opencensus-contrib-exemplar-util', | |
| 'opencensus-contrib-grpc-metrics', | |
| 'opencensus-contrib-grpc-util', | |
| 'opencensus-contrib-http-jaxrs', | |
| 'opencensus-contrib-http-jetty-client', | |
| 'opencensus-contrib-http-servlet', | |
| 'opencensus-contrib-http-util', | |
| 'opencensus-contrib-log-correlation-stackdriver', | |
| 'opencensus-contrib-observability-ready-util', | |
| 'opencensus-contrib-resource-util', | |
| 'opencensus-contrib-spring', | |
| 'opencensus-contrib-spring-sleuth-v1x', | |
| 'opencensus-contrib-spring-starter', | |
| 'opencensus-contrib-zpages', | |
| 'opencensus-exporter-metrics-ocagent', | |
| 'opencensus-exporter-metrics-util', | |
| 'opencensus-exporter-stats-prometheus', | |
| 'opencensus-exporter-stats-signalfx', | |
| 'opencensus-exporter-stats-stackdriver', | |
| 'opencensus-exporter-trace-datadog', | |
| 'opencensus-exporter-trace-elasticsearch', | |
| 'opencensus-exporter-trace-instana', | |
| 'opencensus-exporter-trace-logging', | |
| 'opencensus-exporter-trace-ocagent', | |
| 'opencensus-exporter-trace-stackdriver', | |
| 'opencensus-exporter-trace-zipkin', | |
| 'opencensus-exporter-trace-jaeger', | |
| 'opencensus-exporter-trace-util', | |
| 'opencensus-impl-core', | |
| 'opencensus-impl-lite', | |
| 'opencensus-impl', | |
| 'opencensus-testing'] | |
| } | |
| // At a test failure, log the stack trace to the console so that we don't | |
| // have to open the HTML in a browser. | |
| test { | |
| testLogging { | |
| exceptionFormat = 'full' | |
| showExceptions true | |
| showCauses true | |
| showStackTraces true | |
| } | |
| maxHeapSize = '1500m' | |
| } | |
| if (useCheckerFramework) { | |
| allprojects { | |
| tasks.withType(JavaCompile).all { JavaCompile compile -> | |
| compile.doFirst { | |
| compile.options.compilerArgs += [ | |
| '-Xmaxerrs', '10000', | |
| "-Xbootclasspath/p:${configurations.checkerFrameworkAnnotatedJDK.asPath}", | |
| "-AskipDefs=\\.AutoValue_|^io.opencensus.contrib.appengine.standard.util.TraceIdProto\$|^io.opencensus.contrib.appengine.standard.util.TraceProto\$", | |
| "-AinvariantArrays" | |
| ] | |
| options.fork = true | |
| options.forkOptions.jvmArgs += ["-Xbootclasspath/p:${configurations.checkerFrameworkJavac.asPath}"] | |
| } | |
| } | |
| } | |
| } | |
| // For projects that depend on gRPC during test execution, make sure to | |
| // also configure ALPN if running on a platform (e.g. FreeBSD) that is not | |
| // supported by io.netty:netty-tcnative-boringssl-static:jar. Also see: | |
| // https://github.com/grpc/grpc-java/blob/master/SECURITY.md#tls-with-jdk-jetty-alpnnpn | |
| if (project.name in ['opencensus-exporter-stats-stackdriver', | |
| 'opencensus-exporter-trace-stackdriver']) { | |
| def os = org.gradle.internal.os.OperatingSystem.current() | |
| if (!os.isLinux() && !os.isWindows() && !os.isMacOsX()) { | |
| configurations { | |
| alpn | |
| } | |
| dependencies { | |
| alpn 'org.mortbay.jetty.alpn:jetty-alpn-agent:2.0.7' | |
| } | |
| test { | |
| jvmArgs "-javaagent:${configurations.alpn.asPath}" | |
| } | |
| } | |
| } | |
| } |