1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 <lambda>null20plugins { 21 kotlin("jvm") 22 java 23 application 24 id("com.ncorti.ktfmt.gradle") 25 } 26 <lambda>null27repositories { 28 mavenCentral() 29 } 30 31 val slf4jVersion: String by project 32 val httpclientVersion: String by project 33 val httpcoreVersion: String by project 34 val logbackVersion: String by project 35 val kotlinxCoroutinesJdk8Version: String by project 36 val cliktVersion: String by project 37 <lambda>null38dependencies { 39 implementation(platform("org.jetbrains.kotlin:kotlin-bom")) 40 implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") 41 // clikt is used to drive command line parsing and validation 42 implementation("com.github.ajalt.clikt:clikt:$cliktVersion") 43 implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$kotlinxCoroutinesJdk8Version") 44 implementation("org.apache.thrift:libthrift:INCLUDED") 45 implementation("org.slf4j:slf4j-api:$slf4jVersion") 46 implementation("org.apache.httpcomponents:httpclient:$httpclientVersion") 47 implementation("org.apache.httpcomponents:httpcore:$httpcoreVersion") 48 implementation("ch.qos.logback:logback-classic:$logbackVersion") 49 testImplementation("org.jetbrains.kotlin:kotlin-test") 50 testImplementation("org.jetbrains.kotlin:kotlin-test-junit") 51 } 52 <lambda>null53kotlin { 54 jvmToolchain { 55 (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11)) 56 } 57 } 58 <lambda>null59tasks { 60 application { 61 applicationName = "TestClient" 62 mainClass.set("org.apache.thrift.test.TestClientKt") 63 } 64 65 if (JavaVersion.current().isJava11Compatible) { 66 ktfmt { 67 kotlinLangStyle() 68 } 69 } 70 71 task<Exec>("compileThrift") { 72 val thriftBin = if (hasProperty("thrift.compiler")) { 73 file(property("thrift.compiler")) 74 } else { 75 project.rootDir.resolve("../../compiler/cpp/thrift") 76 } 77 val outputDir = layout.buildDirectory.dir("generated-sources") 78 doFirst { 79 mkdir(outputDir) 80 } 81 commandLine = listOf( 82 thriftBin.absolutePath, 83 "-gen", 84 "kotlin", 85 "-out", 86 outputDir.get().toString(), 87 project.rootDir.resolve("../../test/ThriftTest.thrift").absolutePath 88 ) 89 group = LifecycleBasePlugin.BUILD_GROUP 90 } 91 92 compileKotlin { 93 dependsOn("compileThrift") 94 } 95 } 96 <lambda>null97sourceSets["main"].java { 98 srcDir(layout.buildDirectory.dir("generated-sources")) 99 } 100