You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
498 lines
21 KiB
498 lines
21 KiB
buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
mavenLocal()
|
|
maven {
|
|
url "https://plugins.gradle.org/m2/"
|
|
}
|
|
}
|
|
dependencies {
|
|
classpath 'ru.vyarus:gradle-animalsniffer-plugin:1.4.6'
|
|
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.7.1"
|
|
classpath "me.champeau.gradle:jmh-gradle-plugin:0.4.7"
|
|
classpath "gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.7.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'
|
|
|
|
// Don't use the Checker Framework by default, since it interferes with Error Prone.
|
|
def useCheckerFramework = rootProject.hasProperty('checkerFramework')
|
|
def useErrorProne = !useCheckerFramework
|
|
|
|
subprojects {
|
|
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: "me.champeau.gradle.jmh"
|
|
apply plugin: "io.morethan.jmhreport"
|
|
// Plugins that require java8
|
|
if (JavaVersion.current().isJava8Compatible()) {
|
|
if (useErrorProne) {
|
|
apply plugin: "net.ltgt.errorprone"
|
|
}
|
|
apply plugin: 'com.github.sherter.google-java-format'
|
|
}
|
|
|
|
group = "io.opencensus"
|
|
version = "0.17.0-SNAPSHOT" // CURRENT_OPENCENSUS_VERSION
|
|
|
|
sourceCompatibility = 1.6
|
|
targetCompatibility = 1.6
|
|
|
|
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) {
|
|
if (JavaVersion.current().isJava8Compatible()) {
|
|
it.options.compilerArgs += ["-XepAllDisabledChecksAsWarnings", "-XepDisableWarningsInGeneratedCode"]
|
|
|
|
// 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"]
|
|
}
|
|
}
|
|
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()) {
|
|
// TODO(sebright): Enable -Werror for Java 9 once we upgrade AutoValue (issue #1017).
|
|
it.options.compilerArgs += ["-Werror"]
|
|
}
|
|
if (JavaVersion.current().isJava7()) {
|
|
// Suppress all deprecation warnings with Java 7, since there are some bugs in its handling of
|
|
// @SuppressWarnings. See
|
|
// https://stackoverflow.com/questions/26921774/how-to-avoid-deprecation-warnings-when-suppresswarningsdeprecation-doesnt
|
|
it.options.compilerArgs += ["-Xlint:-deprecation"]
|
|
|
|
// TODO(bdrutu): Enable for Java 7 when fix the issue with configuring bootstrap class.
|
|
// [options] bootstrap class path not set in conjunction with -source 1.6
|
|
it.options.compilerArgs += ["-Xlint:-options"]
|
|
}
|
|
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.64'
|
|
aspectjVersion = '1.8.11'
|
|
autoValueVersion = '1.4'
|
|
findBugsAnnotationsVersion = '3.0.1'
|
|
findBugsJsr305Version = '3.0.2'
|
|
errorProneVersion = '2.3.1'
|
|
grpcVersion = '1.14.0'
|
|
guavaVersion = '20.0'
|
|
googleAuthVersion = '0.11.0'
|
|
googleCloudBetaVersion = '0.64.0-beta'
|
|
googleCloudGaVersion = '1.46.0'
|
|
log4j2Version = '2.11.1'
|
|
signalfxVersion = '0.0.39'
|
|
springBootVersion = '1.5.15.RELEASE'
|
|
springCloudVersion = '1.3.4.RELEASE'
|
|
springVersion = '4.3.12.RELEASE'
|
|
prometheusVersion = '0.4.0'
|
|
protobufVersion = '3.5.1'
|
|
zipkinReporterVersion = '2.3.2'
|
|
jaegerReporterVersion = '0.27.0'
|
|
opencensusProtoVersion = '0.0.2'
|
|
dropwizardVersion = '3.1.2'
|
|
|
|
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.7.11',
|
|
config: 'com.typesafe:config:1.2.1',
|
|
disruptor: 'com.lmax:disruptor:3.4.1',
|
|
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}",
|
|
log4j2: "org.apache.logging.log4j:log4j-core:${log4j2Version}",
|
|
zipkin_reporter: "io.zipkin.reporter2:zipkin-reporter:${zipkinReporterVersion}",
|
|
zipkin_urlconnection: "io.zipkin.reporter2:zipkin-sender-urlconnection:${zipkinReporterVersion}",
|
|
jaeger_reporter: "com.uber.jaeger:jaeger-core:${jaegerReporterVersion}",
|
|
google_cloud_monitoring: "com.google.cloud:google-cloud-monitoring:${googleCloudGaVersion}",
|
|
grpc_context: "io.grpc:grpc-context:${grpcVersion}",
|
|
grpc_core: "io.grpc:grpc-core:${grpcVersion}",
|
|
grpc_netty: "io.grpc:grpc-netty:${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_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}",
|
|
|
|
// Test dependencies.
|
|
guava_testlib: "com.google.guava:guava-testlib:${guavaVersion}",
|
|
junit: 'junit:junit:4.12',
|
|
mockito: 'org.mockito:mockito-core:1.9.5',
|
|
spring_test: "org.springframework:spring-test:${springVersion}",
|
|
truth: 'com.google.truth:truth:0.30',
|
|
dropwizard: "io.dropwizard.metrics:metrics-core:${dropwizardVersion}",
|
|
]
|
|
}
|
|
|
|
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',
|
|
'opencensus-exporter-stats-stackdriver',
|
|
'opencensus-exporter-trace-stackdriver',
|
|
'opencensus-exporter-trace-jaeger'])) {
|
|
resolutionStrategy.failOnVersionConflict()
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
if (useCheckerFramework) {
|
|
ext.checkerFrameworkVersion = '2.5.5'
|
|
|
|
// 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 && JavaVersion.current().isJava8Compatible()) {
|
|
// 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
|
|
}
|
|
|
|
// Disable checkstyle if no java8.
|
|
checkstyleMain.enabled = JavaVersion.current().isJava8Compatible()
|
|
checkstyleTest.enabled = JavaVersion.current().isJava8Compatible()
|
|
checkstyleJmh.enabled = JavaVersion.current().isJava8Compatible()
|
|
|
|
// Google formatter works only on java8.
|
|
if (JavaVersion.current().isJava8Compatible()) {
|
|
googleJavaFormat {
|
|
toolVersion '1.6'
|
|
}
|
|
|
|
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
|
|
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-exemplar-util',
|
|
'opencensus-contrib-grpc-metrics',
|
|
'opencensus-contrib-grpc-util',
|
|
'opencensus-contrib-http-util',
|
|
'opencensus-contrib-log-correlation-log4j2',
|
|
'opencensus-contrib-log-correlation-stackdriver',
|
|
'opencensus-contrib-monitored-resource-util',
|
|
'opencensus-contrib-spring',
|
|
'opencensus-contrib-spring-sleuth-v1x',
|
|
'opencensus-contrib-zpages',
|
|
'opencensus-exporter-stats-prometheus',
|
|
'opencensus-exporter-stats-signalfx',
|
|
'opencensus-exporter-stats-stackdriver',
|
|
'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-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}"
|
|
}
|
|
}
|
|
}
|
|
}
|