1*238ab3e7SAndroid Build Coastguard Worker /* 2*238ab3e7SAndroid Build Coastguard Worker * Copyright (C) 2020 Square, Inc. 3*238ab3e7SAndroid Build Coastguard Worker * 4*238ab3e7SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*238ab3e7SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*238ab3e7SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*238ab3e7SAndroid Build Coastguard Worker * 8*238ab3e7SAndroid Build Coastguard Worker * https://www.apache.org/licenses/LICENSE-2.0 9*238ab3e7SAndroid Build Coastguard Worker * 10*238ab3e7SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*238ab3e7SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*238ab3e7SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*238ab3e7SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*238ab3e7SAndroid Build Coastguard Worker * limitations under the License. 15*238ab3e7SAndroid Build Coastguard Worker */ 16*238ab3e7SAndroid Build Coastguard Worker 17*238ab3e7SAndroid Build Coastguard Worker import com.diffplug.gradle.spotless.JavaExtension 18*238ab3e7SAndroid Build Coastguard Worker import com.vanniktech.maven.publish.MavenPublishBaseExtension 19*238ab3e7SAndroid Build Coastguard Worker import com.vanniktech.maven.publish.SonatypeHost 20*238ab3e7SAndroid Build Coastguard Worker import org.jetbrains.dokka.gradle.DokkaTask 21*238ab3e7SAndroid Build Coastguard Worker import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension 22*238ab3e7SAndroid Build Coastguard Worker import org.jetbrains.kotlin.gradle.tasks.KotlinCompile 23*238ab3e7SAndroid Build Coastguard Worker import java.net.URL 24*238ab3e7SAndroid Build Coastguard Worker 25*238ab3e7SAndroid Build Coastguard Worker buildscript { 26*238ab3e7SAndroid Build Coastguard Worker dependencies { 27*238ab3e7SAndroid Build Coastguard Worker val kotlinVersion = System.getenv("MOSHI_KOTLIN_VERSION") 28*238ab3e7SAndroid Build Coastguard Worker ?: libs.versions.kotlin.get() 29*238ab3e7SAndroid Build Coastguard Worker val kspVersion = System.getenv("MOSHI_KSP_VERSION") 30*238ab3e7SAndroid Build Coastguard Worker ?: libs.versions.ksp.get() 31*238ab3e7SAndroid Build Coastguard Worker classpath(kotlin("gradle-plugin", version = kotlinVersion)) 32*238ab3e7SAndroid Build Coastguard Worker classpath("com.google.devtools.ksp:symbol-processing-gradle-plugin:$kspVersion") 33*238ab3e7SAndroid Build Coastguard Worker // https://github.com/melix/japicmp-gradle-plugin/issues/36 34*238ab3e7SAndroid Build Coastguard Worker classpath("com.google.guava:guava:28.2-jre") 35*238ab3e7SAndroid Build Coastguard Worker } 36*238ab3e7SAndroid Build Coastguard Worker } 37*238ab3e7SAndroid Build Coastguard Worker 38*238ab3e7SAndroid Build Coastguard Worker plugins { 39*238ab3e7SAndroid Build Coastguard Worker alias(libs.plugins.mavenPublish) 40*238ab3e7SAndroid Build Coastguard Worker alias(libs.plugins.dokka) apply false 41*238ab3e7SAndroid Build Coastguard Worker alias(libs.plugins.spotless) 42*238ab3e7SAndroid Build Coastguard Worker alias(libs.plugins.japicmp) apply false 43*238ab3e7SAndroid Build Coastguard Worker } 44*238ab3e7SAndroid Build Coastguard Worker 45*238ab3e7SAndroid Build Coastguard Worker allprojects { 46*238ab3e7SAndroid Build Coastguard Worker group = "com.squareup.moshi" 47*238ab3e7SAndroid Build Coastguard Worker version = "1.15.1" 48*238ab3e7SAndroid Build Coastguard Worker 49*238ab3e7SAndroid Build Coastguard Worker repositories { 50*238ab3e7SAndroid Build Coastguard Worker mavenCentral() 51*238ab3e7SAndroid Build Coastguard Worker } 52*238ab3e7SAndroid Build Coastguard Worker } 53*238ab3e7SAndroid Build Coastguard Worker 54*238ab3e7SAndroid Build Coastguard Worker spotless { 55*238ab3e7SAndroid Build Coastguard Worker format("misc") { 56*238ab3e7SAndroid Build Coastguard Worker target("*.md", ".gitignore") 57*238ab3e7SAndroid Build Coastguard Worker trimTrailingWhitespace() 58*238ab3e7SAndroid Build Coastguard Worker indentWithSpaces(2) 59*238ab3e7SAndroid Build Coastguard Worker endWithNewline() 60*238ab3e7SAndroid Build Coastguard Worker } 61*238ab3e7SAndroid Build Coastguard Worker val configureCommonJavaFormat: JavaExtension.() -> Unit = { 62*238ab3e7SAndroid Build Coastguard Worker googleJavaFormat(libs.versions.gjf.get()) 63*238ab3e7SAndroid Build Coastguard Worker } 64*238ab3e7SAndroid Build Coastguard Worker java { 65*238ab3e7SAndroid Build Coastguard Worker configureCommonJavaFormat() 66*238ab3e7SAndroid Build Coastguard Worker target("**/*.java") 67*238ab3e7SAndroid Build Coastguard Worker targetExclude( 68*238ab3e7SAndroid Build Coastguard Worker "**/build/**", 69*238ab3e7SAndroid Build Coastguard Worker "**/RecordsTest.java", 70*238ab3e7SAndroid Build Coastguard Worker "**/RecordJsonAdapter.java", 71*238ab3e7SAndroid Build Coastguard Worker ) 72*238ab3e7SAndroid Build Coastguard Worker } 73*238ab3e7SAndroid Build Coastguard Worker kotlin { 74*238ab3e7SAndroid Build Coastguard Worker ktlint(libs.versions.ktlint.get()).userData(mapOf("indent_size" to "2")) 75*238ab3e7SAndroid Build Coastguard Worker target("**/*.kt") 76*238ab3e7SAndroid Build Coastguard Worker trimTrailingWhitespace() 77*238ab3e7SAndroid Build Coastguard Worker endWithNewline() 78*238ab3e7SAndroid Build Coastguard Worker targetExclude("**/Dependencies.kt", "**/build/**") 79*238ab3e7SAndroid Build Coastguard Worker } 80*238ab3e7SAndroid Build Coastguard Worker kotlinGradle { 81*238ab3e7SAndroid Build Coastguard Worker ktlint(libs.versions.ktlint.get()).userData(mapOf("indent_size" to "2")) 82*238ab3e7SAndroid Build Coastguard Worker target("**/*.gradle.kts") 83*238ab3e7SAndroid Build Coastguard Worker trimTrailingWhitespace() 84*238ab3e7SAndroid Build Coastguard Worker endWithNewline() 85*238ab3e7SAndroid Build Coastguard Worker } 86*238ab3e7SAndroid Build Coastguard Worker } 87*238ab3e7SAndroid Build Coastguard Worker 88*238ab3e7SAndroid Build Coastguard Worker subprojects { 89*238ab3e7SAndroid Build Coastguard Worker // Apply with "java" instead of just "java-library" so kotlin projects get it too 90*238ab3e7SAndroid Build Coastguard Worker pluginManager.withPlugin("java") { 91*238ab3e7SAndroid Build Coastguard Worker configure<JavaPluginExtension> { 92*238ab3e7SAndroid Build Coastguard Worker toolchain { 93*238ab3e7SAndroid Build Coastguard Worker languageVersion.set(JavaLanguageVersion.of(17)) 94*238ab3e7SAndroid Build Coastguard Worker } 95*238ab3e7SAndroid Build Coastguard Worker } 96*238ab3e7SAndroid Build Coastguard Worker if (project.name != "records-tests") { 97*238ab3e7SAndroid Build Coastguard Worker tasks.withType<JavaCompile>().configureEach { 98*238ab3e7SAndroid Build Coastguard Worker options.release.set(8) 99*238ab3e7SAndroid Build Coastguard Worker } 100*238ab3e7SAndroid Build Coastguard Worker } 101*238ab3e7SAndroid Build Coastguard Worker } 102*238ab3e7SAndroid Build Coastguard Worker 103*238ab3e7SAndroid Build Coastguard Worker pluginManager.withPlugin("org.jetbrains.kotlin.jvm") { 104*238ab3e7SAndroid Build Coastguard Worker tasks.withType<KotlinCompile>().configureEach { 105*238ab3e7SAndroid Build Coastguard Worker kotlinOptions { 106*238ab3e7SAndroid Build Coastguard Worker // TODO re-enable when no longer supporting multiple kotlin versions 107*238ab3e7SAndroid Build Coastguard Worker // @Suppress("SuspiciousCollectionReassignment") 108*238ab3e7SAndroid Build Coastguard Worker // freeCompilerArgs += listOf("-progressive") 109*238ab3e7SAndroid Build Coastguard Worker jvmTarget = libs.versions.jvmTarget.get() 110*238ab3e7SAndroid Build Coastguard Worker } 111*238ab3e7SAndroid Build Coastguard Worker } 112*238ab3e7SAndroid Build Coastguard Worker 113*238ab3e7SAndroid Build Coastguard Worker configure<KotlinProjectExtension> { 114*238ab3e7SAndroid Build Coastguard Worker if (project.name != "examples") { 115*238ab3e7SAndroid Build Coastguard Worker explicitApi() 116*238ab3e7SAndroid Build Coastguard Worker } 117*238ab3e7SAndroid Build Coastguard Worker } 118*238ab3e7SAndroid Build Coastguard Worker } 119*238ab3e7SAndroid Build Coastguard Worker } 120*238ab3e7SAndroid Build Coastguard Worker 121*238ab3e7SAndroid Build Coastguard Worker allprojects { 122*238ab3e7SAndroid Build Coastguard Worker tasks.withType<DokkaTask>().configureEach { 123*238ab3e7SAndroid Build Coastguard Worker dokkaSourceSets.configureEach { 124*238ab3e7SAndroid Build Coastguard Worker reportUndocumented.set(false) 125*238ab3e7SAndroid Build Coastguard Worker skipDeprecated.set(true) 126*238ab3e7SAndroid Build Coastguard Worker jdkVersion.set(8) 127*238ab3e7SAndroid Build Coastguard Worker perPackageOption { 128*238ab3e7SAndroid Build Coastguard Worker matchingRegex.set("com\\.squareup.moshi\\.internal.*") 129*238ab3e7SAndroid Build Coastguard Worker suppress.set(true) 130*238ab3e7SAndroid Build Coastguard Worker } 131*238ab3e7SAndroid Build Coastguard Worker } 132*238ab3e7SAndroid Build Coastguard Worker if (name == "dokkaHtml") { 133*238ab3e7SAndroid Build Coastguard Worker outputDirectory.set(rootDir.resolve("docs/1.x")) 134*238ab3e7SAndroid Build Coastguard Worker dokkaSourceSets.configureEach { 135*238ab3e7SAndroid Build Coastguard Worker skipDeprecated.set(true) 136*238ab3e7SAndroid Build Coastguard Worker externalDocumentationLink { 137*238ab3e7SAndroid Build Coastguard Worker url.set(URL("https://square.github.io/okio/2.x/okio/")) 138*238ab3e7SAndroid Build Coastguard Worker } 139*238ab3e7SAndroid Build Coastguard Worker } 140*238ab3e7SAndroid Build Coastguard Worker } 141*238ab3e7SAndroid Build Coastguard Worker } 142*238ab3e7SAndroid Build Coastguard Worker 143*238ab3e7SAndroid Build Coastguard Worker plugins.withId("com.vanniktech.maven.publish.base") { 144*238ab3e7SAndroid Build Coastguard Worker configure<MavenPublishBaseExtension> { 145*238ab3e7SAndroid Build Coastguard Worker publishToMavenCentral(SonatypeHost.S01, automaticRelease = true) 146*238ab3e7SAndroid Build Coastguard Worker signAllPublications() 147*238ab3e7SAndroid Build Coastguard Worker pom { 148*238ab3e7SAndroid Build Coastguard Worker description.set("A modern JSON API for Android and Java") 149*238ab3e7SAndroid Build Coastguard Worker name.set(project.name) 150*238ab3e7SAndroid Build Coastguard Worker url.set("https://github.com/square/moshi/") 151*238ab3e7SAndroid Build Coastguard Worker licenses { 152*238ab3e7SAndroid Build Coastguard Worker license { 153*238ab3e7SAndroid Build Coastguard Worker name.set("The Apache Software License, Version 2.0") 154*238ab3e7SAndroid Build Coastguard Worker url.set("https://www.apache.org/licenses/LICENSE-2.0.txt") 155*238ab3e7SAndroid Build Coastguard Worker distribution.set("repo") 156*238ab3e7SAndroid Build Coastguard Worker } 157*238ab3e7SAndroid Build Coastguard Worker } 158*238ab3e7SAndroid Build Coastguard Worker scm { 159*238ab3e7SAndroid Build Coastguard Worker url.set("https://github.com/square/moshi/") 160*238ab3e7SAndroid Build Coastguard Worker connection.set("scm:git:git://github.com/square/moshi.git") 161*238ab3e7SAndroid Build Coastguard Worker developerConnection.set("scm:git:ssh://[email protected]/square/moshi.git") 162*238ab3e7SAndroid Build Coastguard Worker } 163*238ab3e7SAndroid Build Coastguard Worker developers { 164*238ab3e7SAndroid Build Coastguard Worker developer { 165*238ab3e7SAndroid Build Coastguard Worker id.set("square") 166*238ab3e7SAndroid Build Coastguard Worker name.set("Square, Inc.") 167*238ab3e7SAndroid Build Coastguard Worker } 168*238ab3e7SAndroid Build Coastguard Worker } 169*238ab3e7SAndroid Build Coastguard Worker } 170*238ab3e7SAndroid Build Coastguard Worker } 171*238ab3e7SAndroid Build Coastguard Worker } 172*238ab3e7SAndroid Build Coastguard Worker } 173