/* * Copyright 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ plugins { `java-library` id("kotlin") id(libs.plugins.jetbrains.dokka.get().pluginId) id(libs.plugins.android.lint.get().pluginId) } kotlin { explicitApi() } lint { htmlReport = true htmlOutput = file("lint-report.html") textReport = true absolutePaths = false ignoreTestSources = true } affectedTestConfiguration { jvmTestTask = "test" } /** * Creates a configuration for users to use that will be used bundle these dependency * jars inside of this lint check's jar. This is required because lintPublish does * not currently support dependencies, so instead we need to bundle any dependencies with the * lint jar manually. (b/182319899) */ val bundleInside: Configuration = configurations.create("bundleInside") // bundleInside dependencies should be included as compileOnly and testImplementation as well configurations.getByName("compileOnly").setExtendsFrom(setOf(bundleInside)) configurations.getByName("testImplementation").setExtendsFrom(setOf(bundleInside)) tasks.getByName("jar") { this.dependsOn(bundleInside) this.from({ bundleInside // The stdlib is already bundled with lint, so no need to include it manually // in the lint.jar if any dependencies here depend on it .filter { !it.name.contains("kotlin-stdlib") } .map { file -> if (file.isDirectory) { file } else { zipTree(file) } } }) } dependencies { // Bundle metadataJvm inside the Jar bundleInside(libs.kotlin.metadataJvm) compileOnly(libs.android.tools.lint.api) compileOnly(libs.kotlin.reflect) compileOnly(libs.kotlin.stdlib) compileOnly(libs.kotlin.stdlibJdk8) // Override version from transitive dependencies testImplementation(libs.junit) testImplementation(libs.kotlin.reflect) testImplementation(libs.kotlin.stdlib) testImplementation(libs.kotlin.stdlibJdk8) // Override version from transitive dependencies testImplementation(libs.android.tools.lint.lint) testImplementation(libs.android.tools.lint.tests) } java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 }