1*27e8546dSMatt Gilbrideplugins { 2*27e8546dSMatt Gilbride id "net.ltgt.errorprone" version "3.0.1" apply false 3*27e8546dSMatt Gilbride id "me.champeau.jmh" version "0.6.8" apply false 4*27e8546dSMatt Gilbride id "io.github.reyerizo.gradle.jcstress" version "0.8.14" apply false 5*27e8546dSMatt Gilbride} 6*27e8546dSMatt Gilbride 7*27e8546dSMatt Gilbridesubprojects { 8*27e8546dSMatt Gilbride apply plugin: "checkstyle" 9*27e8546dSMatt Gilbride apply plugin: "java-library" 10*27e8546dSMatt Gilbride apply plugin: 'maven-publish' 11*27e8546dSMatt Gilbride apply plugin: "idea" 12*27e8546dSMatt Gilbride apply plugin: "signing" 13*27e8546dSMatt Gilbride apply plugin: "net.ltgt.errorprone" 14*27e8546dSMatt Gilbride 15*27e8546dSMatt Gilbride repositories { 16*27e8546dSMatt Gilbride maven { 17*27e8546dSMatt Gilbride url "https://maven-central.storage-download.googleapis.com/repos/central/data/" } 18*27e8546dSMatt Gilbride mavenCentral() 19*27e8546dSMatt Gilbride } 20*27e8546dSMatt Gilbride 21*27e8546dSMatt Gilbride java { 22*27e8546dSMatt Gilbride toolchain { 23*27e8546dSMatt Gilbride languageVersion = JavaLanguageVersion.of(17) 24*27e8546dSMatt Gilbride } 25*27e8546dSMatt Gilbride } 26*27e8546dSMatt Gilbride 27*27e8546dSMatt Gilbride task javadocJar(type: Jar) { 28*27e8546dSMatt Gilbride classifier = 'javadoc' 29*27e8546dSMatt Gilbride from javadoc 30*27e8546dSMatt Gilbride } 31*27e8546dSMatt Gilbride 32*27e8546dSMatt Gilbride task sourcesJar(type: Jar) { 33*27e8546dSMatt Gilbride classifier = 'sources' 34*27e8546dSMatt Gilbride from sourceSets.main.allSource 35*27e8546dSMatt Gilbride } 36*27e8546dSMatt Gilbride 37*27e8546dSMatt Gilbride checkstyle { 38*27e8546dSMatt Gilbride configDirectory = file("$rootDir/buildscripts") 39*27e8546dSMatt Gilbride toolVersion = "6.17" 40*27e8546dSMatt Gilbride ignoreFailures = false 41*27e8546dSMatt Gilbride if (rootProject.hasProperty("checkstyle.ignoreFailures")) { 42*27e8546dSMatt Gilbride ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean() 43*27e8546dSMatt Gilbride } 44*27e8546dSMatt Gilbride } 45*27e8546dSMatt Gilbride 46*27e8546dSMatt Gilbride afterEvaluate { 47*27e8546dSMatt Gilbride jar { 48*27e8546dSMatt Gilbride manifest { 49*27e8546dSMatt Gilbride attributes ('Automatic-Module-Name': moduleName, 50*27e8546dSMatt Gilbride "Implementation-Version": archiveVersion.get(), 51*27e8546dSMatt Gilbride "Implementation-Title": "PerfMark", 52*27e8546dSMatt Gilbride "Implementation-Vendor": "Carl Mastrangelo", 53*27e8546dSMatt Gilbride "Implementation-URL": "https://www.perfmark.io/", 54*27e8546dSMatt Gilbride "Carl-Is-Awesome": "true") 55*27e8546dSMatt Gilbride } 56*27e8546dSMatt Gilbride 57*27e8546dSMatt Gilbride } 58*27e8546dSMatt Gilbride } 59*27e8546dSMatt Gilbride 60*27e8546dSMatt Gilbride 61*27e8546dSMatt Gilbride publishing { 62*27e8546dSMatt Gilbride publications { 63*27e8546dSMatt Gilbride maven(MavenPublication) { 64*27e8546dSMatt Gilbride from components.java 65*27e8546dSMatt Gilbride 66*27e8546dSMatt Gilbride artifact javadocJar 67*27e8546dSMatt Gilbride artifact sourcesJar 68*27e8546dSMatt Gilbride 69*27e8546dSMatt Gilbride pom { 70*27e8546dSMatt Gilbride name = project.group + ":" + project.name 71*27e8546dSMatt Gilbride url = 'https://github.com/perfmark/perfmark' 72*27e8546dSMatt Gilbride afterEvaluate { 73*27e8546dSMatt Gilbride // description is not available until evaluated. 74*27e8546dSMatt Gilbride description = project.description 75*27e8546dSMatt Gilbride } 76*27e8546dSMatt Gilbride 77*27e8546dSMatt Gilbride scm { 78*27e8546dSMatt Gilbride connection = 'scm:git:https://github.com/perfmark/perfmark.git' 79*27e8546dSMatt Gilbride developerConnection = 'scm:[email protected]:perfmark/perfmark.git' 80*27e8546dSMatt Gilbride url = 'https://github.com/perfmark/perfmark' 81*27e8546dSMatt Gilbride } 82*27e8546dSMatt Gilbride 83*27e8546dSMatt Gilbride licenses { 84*27e8546dSMatt Gilbride license { 85*27e8546dSMatt Gilbride name = 'Apache 2.0' 86*27e8546dSMatt Gilbride url = 'https://opensource.org/licenses/Apache-2.0' 87*27e8546dSMatt Gilbride } 88*27e8546dSMatt Gilbride } 89*27e8546dSMatt Gilbride 90*27e8546dSMatt Gilbride developers { 91*27e8546dSMatt Gilbride developer { 92*27e8546dSMatt Gilbride id = "carl-mastrangelo" 93*27e8546dSMatt Gilbride name = "Carl Mastrangelo" 94*27e8546dSMatt Gilbride email = "[email protected]" 95*27e8546dSMatt Gilbride url = "https://www.perfmark.io/" 96*27e8546dSMatt Gilbride } 97*27e8546dSMatt Gilbride } 98*27e8546dSMatt Gilbride } 99*27e8546dSMatt Gilbride } 100*27e8546dSMatt Gilbride } 101*27e8546dSMatt Gilbride 102*27e8546dSMatt Gilbride repositories { 103*27e8546dSMatt Gilbride maven { 104*27e8546dSMatt Gilbride def stagingUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/' 105*27e8546dSMatt Gilbride def releaseUrl = stagingUrl 106*27e8546dSMatt Gilbride def snapshotUrl = 'https://oss.sonatype.org/content/repositories/snapshots/' 107*27e8546dSMatt Gilbride url = version.endsWith('SNAPSHOT') ? snapshotUrl : releaseUrl 108*27e8546dSMatt Gilbride credentials { 109*27e8546dSMatt Gilbride if (rootProject.hasProperty('ossrhUsername') 110*27e8546dSMatt Gilbride && rootProject.hasProperty('ossrhPassword')) { 111*27e8546dSMatt Gilbride username = rootProject.ossrhUsername 112*27e8546dSMatt Gilbride password = rootProject.ossrhPassword 113*27e8546dSMatt Gilbride } 114*27e8546dSMatt Gilbride } 115*27e8546dSMatt Gilbride } 116*27e8546dSMatt Gilbride } 117*27e8546dSMatt Gilbride } 118*27e8546dSMatt Gilbride 119*27e8546dSMatt Gilbride signing { 120*27e8546dSMatt Gilbride required false 121*27e8546dSMatt Gilbride sign publishing.publications.maven 122*27e8546dSMatt Gilbride } 123*27e8546dSMatt Gilbride 124*27e8546dSMatt Gilbride [publishMavenPublicationToMavenRepository, publishMavenPublicationToMavenLocal]*.onlyIf { 125*27e8546dSMatt Gilbride !name.contains("perfmark-examples") && !name.contains("perfmark-api-testing") 126*27e8546dSMatt Gilbride && !name.contains("perfmark-testing") && !name.contains("perfmark-agent") 127*27e8546dSMatt Gilbride } 128*27e8546dSMatt Gilbride 129*27e8546dSMatt Gilbride [javadoc]*.onlyIf { 130*27e8546dSMatt Gilbride !name.contains("perfmark-java9") && !name.contains("perfmark-examples") 131*27e8546dSMatt Gilbride && !name.contains("perfmark-api-testing") && !name.contains("perfmark-testing") 132*27e8546dSMatt Gilbride } 133*27e8546dSMatt Gilbride 134*27e8546dSMatt Gilbride if (rootProject.properties.get('errorProne', true)) { 135*27e8546dSMatt Gilbride dependencies { 136*27e8546dSMatt Gilbride errorprone 'com.google.errorprone:error_prone_core:2.16' 137*27e8546dSMatt Gilbride errorproneJavac 'com.google.errorprone:javac:9+181-r4173-1' 138*27e8546dSMatt Gilbride } 139*27e8546dSMatt Gilbride } else { 140*27e8546dSMatt Gilbride // Disable Error Prone 141*27e8546dSMatt Gilbride allprojects { 142*27e8546dSMatt Gilbride afterEvaluate { project -> 143*27e8546dSMatt Gilbride project.tasks.withType(JavaCompile) { 144*27e8546dSMatt Gilbride options.errorprone.enabled = false 145*27e8546dSMatt Gilbride } 146*27e8546dSMatt Gilbride } 147*27e8546dSMatt Gilbride } 148*27e8546dSMatt Gilbride } 149*27e8546dSMatt Gilbride 150*27e8546dSMatt Gilbride group = "io.perfmark" 151*27e8546dSMatt Gilbride version = "0.26.0" 152*27e8546dSMatt Gilbride 153*27e8546dSMatt Gilbride dependencies { 154*27e8546dSMatt Gilbride testImplementation libs.junit 155*27e8546dSMatt Gilbride } 156*27e8546dSMatt Gilbride} 157