/*
 * Copyright (C) 2018 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
 *
 *      http://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.
 */

import androidx.build.LibraryType

plugins {
    id('AndroidXPlugin')
    id('java-library')
}

androidx.configureAarAsJarForConfiguration("testImplementation")

dependencies {
    api('androidx.annotation:annotation:1.1.0')
    api(libs.jsr250)
    implementation(libs.autoCommon)
    implementation(libs.autoValue)
    implementation(libs.autoValueAnnotations)
    implementation(libs.javapoet)

    // For testing, add in the compiled classes from appsearch to get access to annotations.
    testImplementationAarAsJar(project(":appsearch:appsearch"))
    testImplementation(libs.googleCompileTesting)
}

androidx {
    name = 'AndroidX AppSearch Compiler'
    type = LibraryType.ANNOTATION_PROCESSOR
    mavenGroup = LibraryGroups.APPSEARCH
    inceptionYear = '2019'
    description = 'Compiler for classes annotated with @androidx.appsearch.annotation.Document'
    failOnDeprecationWarnings = false
}
