buildscript { repositories { mavenCentral() mavenLocal() maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath 'ru.vyarus:gradle-animalsniffer-plugin:1.3.0' classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.9' classpath "net.ltgt.gradle:gradle-apt-plugin:0.10" } } subprojects { apply plugin: "checkstyle" apply plugin: 'maven' apply plugin: 'idea' 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" // Plugins that require java8 if (JavaVersion.current().isJava8Compatible()) { // TODO(bdrutu): enable all checks. apply plugin: "net.ltgt.errorprone" } group = "com.google.instrumentation" version = "0.5.0-SNAPSHOT" // CURRENT_INSTRUMENTATION_VERSION sourceCompatibility = 1.6 targetCompatibility = 1.6 repositories { mavenCentral() mavenLocal() } [compileJava, compileTestJava].each() { // 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 (JavaVersion.current().isJava8Compatible()) { // TODO(bdrutu): Read files directly instead of reading from properties. if (rootProject.hasProperty("errorProneWarnings")) { it.options.compilerArgs += rootProject.properties["errorProneWarnings"].split(',').collect { it as String } } if (rootProject.hasProperty("errorProneExperimentalErrors")) { it.options.compilerArgs += rootProject.properties["errorProneExperimentalErrors"].split(',').collect { it as String } } if (rootProject.hasProperty("errorProneExperimentalWarnings")) { it.options.compilerArgs += rootProject.properties["errorProneExperimentalWarnings"].split(',').collect { it as String } } if (rootProject.hasProperty("errorProneExperimentalSuggestions")) { it.options.compilerArgs += rootProject.properties["errorProneExperimentalSuggestions"].split(',').collect { it as String } } } it.options.encoding = "UTF-8" // TODO(bdrutu): Enable when fix the issue with configuring bootstrap class. // [options] bootstrap class path not set in conjunction with -source 1.6 if (JavaVersion.current().isJava8Compatible()) { it.options.compilerArgs += ["-Werror"] } } 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 { autoValueVersion = '1.4' guavaVersion = '19.0' grpcContextVersion = '1.3.0' libraries = [ auto_value : "com.google.auto.value:auto-value:${autoValueVersion}", disruptor : 'com.lmax:disruptor:3.3.6', errorprone : 'com.google.errorprone:error_prone_annotations:2.0.11', grpc_context : "io.grpc:grpc-context:${grpcContextVersion}", guava : "com.google.guava:guava:${guavaVersion}", jsr305 : 'com.google.code.findbugs:jsr305:3.0.0', // Test dependencies. guava_testlib : "com.google.guava:guava-testlib:${guavaVersion}", junit : 'junit:junit:4.11', mockito : 'org.mockito:mockito-core:1.9.5', truth : 'com.google.truth:truth:0.30', ] } dependencies { compile libraries.errorprone, libraries.jsr305 testCompile libraries.guava_testlib, libraries.junit, libraries.mockito, libraries.truth if (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:2.0.19' } } findbugs { toolVersion = '3.0.1' 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 } } // Disable findbugs for tests. findbugsTest.enabled = false checkstyle { configFile = file("$rootDir/checkstyle.xml") toolVersion = "7.6" ignoreFailures = false if (rootProject.hasProperty("checkstyle.ignoreFailures")) { ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean() } configProperties["rootDir"] = rootDir } checkstyleTest { excludes = ["com/google/instrumentation/**"] } // Disable checkstyle if no java8. checkstyleMain.enabled = JavaVersion.current().isJava8Compatible() checkstyleTest.enabled = JavaVersion.current().isJava8Compatible() 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 } 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 "Instrumentation" packaging 'jar' // Add a map with all the project.name -> artifactId when we // are going to upload more artifacts. artifactId jar.baseName description project.description url 'https://github.com/google/instrumentation-java' scm { connection 'scm:svn:https://github.com/google/instrumentation-java' developerConnection 'scm:git:git@github.com/google/instrumentation-java' url 'https://github.com/google/instrumentation-java' } licenses { license { name 'The Apache License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id 'com.google.instrumentation' name 'Instrumentation Developers' email 'instrumentation-developers@googlegroups.com' // https://issues.gradle.org/browse/GRADLE-2719 organization = 'Google, Inc.' organizationUrl 'https://www.google.com' } } } } } } // For the moment we upload only the artifact for the API uploadArchives.onlyIf { name == 'core'} // 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' } }