Files

88 lines
2.7 KiB
Kotlin

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
plugins {
`java-library`
id("airflow-jvm-conventions")
id("airflow-publish")
}
val slf4jVersion: String by project
abstract class GenerateConstants : DefaultTask() {
@get:Input
abstract val requestedSlf4jApiVersion: Property<String>
@get:OutputDirectory
abstract val outputDir: DirectoryProperty
@TaskAction
fun generate() =
outputDir.get().file("org/apache/airflow/sdk/slf4j/Constants.kt").asFile.apply {
parentFile.mkdirs()
writeText(
"""
// Generated by Gradle — do not edit.
package org.apache.airflow.sdk.slf4j
internal const val REQUESTED_SLF4J_API_VERSION = "${requestedSlf4jApiVersion.get()}"
""".trimIndent() + "\n",
)
}
}
val generateSlf4jApiVersion by tasks.registering(GenerateConstants::class) {
description = "Generate source for constants pulled from Gradle properties."
requestedSlf4jApiVersion = slf4jVersion
outputDir = layout.buildDirectory.dir("generated/sources/slf4jApiVersion/kotlin/main")
}
kotlin.sourceSets.main {
kotlin.srcDir(generateSlf4jApiVersion.map { it.outputs.files.singleFile })
}
dependencies {
api("org.slf4j:slf4j-api:$slf4jVersion")
implementation(project(":sdk"))
testImplementation(kotlin("test"))
testImplementation(testFixtures(project(":sdk")))
}
java {
withSourcesJar() // Required by Maven Central.
}
tasks.withType<Test> {
useJUnitPlatform()
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifactId = "airflow-sdk-slf4j"
from(components["java"])
pom {
name = "Apache Airflow Java SDK SLF4J Provider"
description = "SLF4J logging provider for the Apache Airflow Java SDK. " +
"Routes SLF4J log calls from task code through the SDK to Airflow's task log store."
}
}
}
}