xref: /aosp_15_r20/external/moshi/build.gradle.kts (revision 238ab3e782f339ab327592a602fa7df0a3f729ad)
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