plugins { id "java" id "maven-publish" id "ru.vyarus.animalsniffer" } description = 'OpenTelemetry SDK Common' ext.moduleName = "io.opentelemetry.sdk.common" ext.propertiesDir = "build/generated/properties/io/opentelemetry/sdk/common" dependencies { api project(':opentelemetry-api') annotationProcessor libraries.auto_value testAnnotationProcessor libraries.auto_value testCompileOnly libraries.auto_value_annotation testImplementation project(':opentelemetry-sdk-testing') testImplementation libraries.junit_pioneer, libraries.guava_testlib signature libraries.android_signature } sourceSets { main { output.dir("build/generated/properties", builtBy: 'generateVersionResource') } } animalsniffer { // Don't check sourceSets.jmh and sourceSets.test sourceSets = [ sourceSets.main ] } configurations { testClasses { extendsFrom(testRuntime) } } task testJar(type: Jar) { archiveClassifier.set("test") from sourceSets.test.output } // add the jar generated by the testJar task to the testClasses dependency artifacts { testClasses testJar } task generateVersionResource { doLast { def folder = file(propertiesDir) folder.mkdirs() def propertiesFile = new File(folder.getAbsolutePath(), "version.properties") propertiesFile.write("sdk.version=${project.version}") } } def mrJarVersions = [9] mrJarVersions.each { version-> sourceSets { "java${version}" { java { srcDirs = ["src/main/java${version}"] } } } "compileJava${version}Java" { sourceCompatibility = version targetCompatibility = version options.release = version } configurations."java${version}Implementation".extendsFrom configurations.implementation dependencies { // Common to reference classes in main sourceset from Java 9 one (e.g., to return a common interface) "java${version}Implementation" files(sourceSets.main.output.classesDirs) { builtBy compileJava } } } tasks.withType(Jar) { mrJarVersions.each { version-> into("META-INF/versions/${version}") { from sourceSets."java${version}".output } } manifest.attributes( 'Multi-Release': 'true' ) }