172 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groovy
		
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groovy
		
	
	
	
import java.time.Duration
 | 
						|
import nebula.plugin.release.git.opinion.Strategies
 | 
						|
 | 
						|
plugins {
 | 
						|
  id 'idea'
 | 
						|
 | 
						|
  id "io.github.gradle-nexus.publish-plugin"
 | 
						|
  id "nebula.release"
 | 
						|
 | 
						|
  id 'org.gradle.test-retry' apply false
 | 
						|
 | 
						|
  id 'org.unbroken-dome.test-sets' apply false
 | 
						|
  id 'com.github.ben-manes.versions'
 | 
						|
 | 
						|
  id "com.diffplug.spotless"
 | 
						|
  id "net.ltgt.errorprone" apply false
 | 
						|
  id "net.ltgt.nullaway" apply false
 | 
						|
}
 | 
						|
 | 
						|
release {
 | 
						|
  defaultVersionStrategy = Strategies.SNAPSHOT
 | 
						|
}
 | 
						|
 | 
						|
nebulaRelease {
 | 
						|
  addReleaseBranchPattern(/v\d+\.\d+\.x/)
 | 
						|
}
 | 
						|
 | 
						|
nexusPublishing {
 | 
						|
  packageGroup = "io.opentelemetry"
 | 
						|
 | 
						|
  repositories {
 | 
						|
    sonatype {
 | 
						|
      username = System.getenv('SONATYPE_USER')
 | 
						|
      password = System.getenv('SONATYPE_KEY')
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  connectTimeout = Duration.ofMinutes(5)
 | 
						|
  clientTimeout = Duration.ofMinutes(5)
 | 
						|
 | 
						|
  transitionCheckOptions {
 | 
						|
    // We have many artifacts so Maven Central takes a long time on its compliance checks. This sets
 | 
						|
    // the timeout for waiting for the repository to close to a comfortable 50 minutes.
 | 
						|
    maxRetries.set(300)
 | 
						|
    delayBetween.set(Duration.ofSeconds(10))
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Enable after verifying Maven Central publishing once through manual closing
 | 
						|
// tasks.release.finalizedBy tasks.closeAndReleaseRepository
 | 
						|
 | 
						|
description = 'OpenTelemetry instrumentations for Java'
 | 
						|
 | 
						|
allprojects {
 | 
						|
  apply plugin: 'idea'
 | 
						|
 | 
						|
  idea {
 | 
						|
    module {
 | 
						|
      downloadJavadoc = false
 | 
						|
      downloadSources = false
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  plugins.withId('net.ltgt.errorprone') {
 | 
						|
    dependencies {
 | 
						|
      errorprone "com.google.errorprone:error_prone_core"
 | 
						|
    }
 | 
						|
 | 
						|
    tasks.withType(JavaCompile).configureEach {
 | 
						|
      options.errorprone {
 | 
						|
        enabled = rootProject.findProperty("disableErrorProne") != "true"
 | 
						|
        disableWarningsInGeneratedCode = true
 | 
						|
        allDisabledChecksAsWarnings = true
 | 
						|
 | 
						|
        excludedPaths = ".*/build/generated/.*"
 | 
						|
 | 
						|
        // Doesn't work well with Java 8
 | 
						|
        disable("FutureReturnValueIgnored")
 | 
						|
 | 
						|
        // Require Guava
 | 
						|
        disable("AutoValueImmutableFields")
 | 
						|
        disable("StringSplitter")
 | 
						|
        disable("ImmutableMemberCollection")
 | 
						|
 | 
						|
        // Don't currently use this (to indicate a local variable that's mutated) but could
 | 
						|
        // consider for future.
 | 
						|
        disable("Var")
 | 
						|
 | 
						|
        // Don't support Android without desugar
 | 
						|
        disable("AndroidJdkLibsChecker")
 | 
						|
        disable("Java7ApiChecker")
 | 
						|
        disable("StaticOrDefaultInterfaceMethod")
 | 
						|
 | 
						|
        // Great check, but for bytecode manipulation it's too common to separate over
 | 
						|
        // onEnter / onExit
 | 
						|
        // TODO(anuraaga): Only disable for auto instrumentation project.
 | 
						|
        disable("MustBeClosedChecker")
 | 
						|
 | 
						|
        // Common to avoid an allocation. Revisit if it's worth opt-in suppressing instead of
 | 
						|
        // disabling entirely.
 | 
						|
        disable("MixedMutabilityReturnType")
 | 
						|
 | 
						|
        // We end up using obsolete types if a library we're instrumenting uses them.
 | 
						|
        disable("JdkObsolete")
 | 
						|
        disable("JavaUtilDate")
 | 
						|
 | 
						|
        // Limits API possibilities
 | 
						|
        disable("NoFunctionalReturnType")
 | 
						|
 | 
						|
        // Storing into a variable in onEnter triggers this unfortunately.
 | 
						|
        // TODO(anuraaga): Only disable for auto instrumentation project.
 | 
						|
        disable("UnusedVariable")
 | 
						|
 | 
						|
        // TODO(anuraaga): Remove this, we use this pattern in several tests and it will mean
 | 
						|
        // some moving.
 | 
						|
        disable("DefaultPackage")
 | 
						|
 | 
						|
        // TODO(anuraaga): Remove this, all our advice classes miss constructors but probably should
 | 
						|
        // address this.
 | 
						|
        disable("PrivateConstructorForUtilityClass")
 | 
						|
 | 
						|
        // TODO(anuraaga): Remove this, probably after instrumenter API migration instead of dealing
 | 
						|
        // with older APIs.
 | 
						|
        disable("InconsistentOverloads")
 | 
						|
        disable("TypeParameterNaming")
 | 
						|
 | 
						|
        // We don't use tools that recognize.
 | 
						|
        disable("InlineMeSuggester")
 | 
						|
        disable("DoNotCallSuggester")
 | 
						|
 | 
						|
        if (name.contains("Jmh") || name.contains("Test")) {
 | 
						|
          disable("HashCodeToString")
 | 
						|
          disable("MemberName")
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  plugins.withId('net.ltgt.nullaway') {
 | 
						|
    dependencies {
 | 
						|
      errorprone "com.uber.nullaway:nullaway"
 | 
						|
    }
 | 
						|
 | 
						|
    nullaway {
 | 
						|
      annotatedPackages.addAll("io.opentelemetry", "com.linecorp.armeria,com.google.common")
 | 
						|
    }
 | 
						|
 | 
						|
    tasks.withType(JavaCompile).configureEach {
 | 
						|
      if (!name.toLowerCase().contains("test")) {
 | 
						|
        options.errorprone {
 | 
						|
          nullaway {
 | 
						|
            severity = net.ltgt.gradle.errorprone.CheckSeverity.ERROR
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
apply plugin: 'com.diffplug.spotless'
 | 
						|
 | 
						|
spotless {
 | 
						|
  // this formatting is applied at the root level, as some of these files are not in a submodules
 | 
						|
  // and would be missed otherwise
 | 
						|
  format 'misc', {
 | 
						|
    target '.gitignore', '*.md', 'docs/**/*.md'
 | 
						|
    indentWithSpaces()
 | 
						|
    trimTrailingWhitespace()
 | 
						|
    endWithNewline()
 | 
						|
  }
 | 
						|
}
 |