plugins {
    id 'application'
    id 'com.diffplug.spotless' version '6.18.0'
    id 'com.github.johnrengelman.shadow' version '8.1.1'
    id 'jacoco'
}

application {
    mainClass = 'org.apache.couchdb.nouveau.NouveauApplication'
}

repositories {
    mavenLocal()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
}

dependencies {
    implementation platform('io.dropwizard:dropwizard-dependencies:4.0.3')
    implementation 'io.dropwizard:dropwizard-core'
    implementation 'io.dropwizard:dropwizard-http2'
    implementation 'io.dropwizard.metrics:metrics-core'
    implementation 'io.dropwizard.metrics:metrics-caffeine'
    implementation 'io.dropwizard.metrics:metrics-jersey2'
    testImplementation 'io.dropwizard:dropwizard-testing'

    def luceneVersion = '9.8.0'
    implementation group: 'org.apache.lucene', name: 'lucene-core', version: luceneVersion
    implementation group: 'org.apache.lucene', name: 'lucene-queryparser', version: luceneVersion
    implementation group: 'org.apache.lucene', name: 'lucene-analysis-common', version: luceneVersion
    implementation group: 'org.apache.lucene', name: 'lucene-analysis-stempel', version: luceneVersion
    implementation group: 'org.apache.lucene', name: 'lucene-analysis-smartcn', version: luceneVersion
    implementation group: 'org.apache.lucene', name: 'lucene-analysis-kuromoji', version: luceneVersion
    implementation group: 'org.apache.lucene', name: 'lucene-facet', version: luceneVersion
    implementation group: 'org.apache.lucene', name: 'lucene-misc', version: luceneVersion

    def swaggerVersion = '2.2.8'
    implementation group: 'io.swagger.core.v3', name: 'swagger-jaxrs2-jakarta', version: swaggerVersion
    implementation group: 'io.swagger.core.v3', name: 'swagger-jaxrs2-servlet-initializer-v2', version: swaggerVersion

    testImplementation 'org.assertj:assertj-core'
    testImplementation 'org.mockito:mockito-core'
}

group = 'org.apache.couchdb.nouveau'
version = '1.0-SNAPSHOT'
description = 'server'

java {
    sourceCompatibility = "11"
}

jar {
    manifest.attributes('Multi-Release': 'true')
}

spotless {
  java {
    importOrder()
    removeUnusedImports()
    cleanthat()
    palantirJavaFormat()
  }
}

testing {
    suites {
        test {
            useJUnitJupiter()
        }
    }
}

shadowJar {
    archiveClassifier.set('dist')
    mergeServiceFiles()
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
    options.deprecation = true
}

tasks.withType(Javadoc) {
    options.encoding = 'UTF-8'
}

tasks.withType(AbstractArchiveTask) {
    preserveFileTimestamps = false
    reproducibleFileOrder = true
}
