blob: deda4671c1e4b21737e9b4f9251c6fd1f12c077e [file] [log] [blame]
Jiayu Liu49b2d6b2022-04-06 16:49:09 +08001/*
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
20plugins {
Jiayu Liu6c002b62022-05-07 00:40:03 +080021 kotlin("jvm")
22 id("com.ncorti.ktfmt.gradle")
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080023 java
24 application
25}
26
27repositories {
28 mavenCentral()
29}
30
Jiayu Liueb62fa82022-05-08 13:01:41 +080031val slf4jVersion: String by project
32val httpclientVersion: String by project
33val httpcoreVersion: String by project
34val logbackVersion: String by project
35val kotlinxCoroutinesJdk8Version: String by project
Jiayu Liu5fdfd0c2022-05-09 10:52:26 +080036val cliktVersion: String by project
Jiayu Liueb62fa82022-05-08 13:01:41 +080037
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080038dependencies {
39 implementation(platform("org.jetbrains.kotlin:kotlin-bom"))
40 implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
Jiayu Liu5fdfd0c2022-05-09 10:52:26 +080041 // clikt is used to drive command line parsing and validation
42 implementation("com.github.ajalt.clikt:clikt:$cliktVersion")
Jiayu Liueb62fa82022-05-08 13:01:41 +080043 implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$kotlinxCoroutinesJdk8Version")
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080044 implementation("org.apache.thrift:libthrift:INCLUDED")
Jiayu Liueb62fa82022-05-08 13:01:41 +080045 implementation("org.slf4j:slf4j-api:$slf4jVersion")
46 implementation("org.apache.httpcomponents:httpclient:$httpclientVersion")
47 implementation("org.apache.httpcomponents:httpcore:$httpcoreVersion")
Jiayu Liueb62fa82022-05-08 13:01:41 +080048 implementation("ch.qos.logback:logback-classic:$logbackVersion")
49 testImplementation("org.jetbrains.kotlin:kotlin-test")
50 testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080051}
52
Jiayu Liuab83ffc2022-05-10 01:56:30 +080053kotlin {
54 jvmToolchain {
55 (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(8))
56 }
57}
58
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080059tasks {
60 application {
61 applicationName = "TestClient"
62 mainClass.set("org.apache.thrift.test.TestClientKt")
63 }
64
65 ktfmt {
66 kotlinLangStyle()
67 }
68
69 task<Exec>("compileThrift") {
70 val thriftBin = if (hasProperty("thrift.compiler")) {
71 file(property("thrift.compiler"))
72 } else {
73 project.rootDir.resolve("../../compiler/cpp/thrift")
74 }
75 val outputDir = layout.buildDirectory.dir("generated-sources")
76 doFirst {
77 mkdir(outputDir)
78 }
79 commandLine = listOf(
80 thriftBin.absolutePath,
81 "-gen",
82 "kotlin",
83 "-out",
84 outputDir.get().toString(),
85 project.rootDir.resolve("../../test/ThriftTest.thrift").absolutePath
86 )
87 group = LifecycleBasePlugin.BUILD_GROUP
88 }
89
90 compileKotlin {
91 dependsOn("compileThrift")
92 }
93}
94
95sourceSets["main"].java {
96 srcDir(layout.buildDirectory.dir("generated-sources"))
97}